`
WarofOurs
  • 浏览: 14937 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Struts 校验失败 值丢失

阅读更多
struts.xml配置
<package name="default" extends="struts-default">
   xxxxx
</package>
. 其中,struts-default包含了struts2默认的拦截器栈.
<interceptor-stack name="defaultStack">
                <interceptor-ref name="exception"/>
                <interceptor-ref name="alias"/>
                <interceptor-ref name="servletConfig"/>
                <interceptor-ref name="i18n"/>
                <interceptor-ref name="prepare"/>
                <interceptor-ref name="chain"/>
                <interceptor-ref name="scopedModelDriven"/>
                <interceptor-ref name="modelDriven"/>
                <interceptor-ref name="fileUpload"/>
                <interceptor-ref name="checkbox"/>
                <interceptor-ref name="multiselect"/>
                <interceptor-ref name="staticParams"/>
                <interceptor-ref name="actionMappingParams"/>
                <interceptor-ref name="params">
                    <param name="excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param>
                </interceptor-ref>
                <interceptor-ref name="conversionError"/>
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
                <interceptor-ref name="workflow">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
                <interceptor-ref name="debugging"/>
            </interceptor-stack>


该配置在struts2-core.jar的struts-default.xml文件里.

值丢失原因:
  当到conversionError Interceptor类型转换失败时,会添加校验失败信息。
 
if(action instanceof ValidationAware)
                {
                    ValidationAware va = (ValidationAware)action;
                    va.addFieldError(propertyName, message);
                }

  当conversionError Interceptor执行完,到workflow Interceptor时,如果发现有校验错误信息,直接return "input"给struts,就不会再到你的Action里面,导致值丢失。

解决办法:
   配置自己的拦截器栈,去除workflow Interceptor。
    <interceptors>
            <interceptor-stack name="xxx">
                <interceptor-ref name="exception"/>
                <interceptor-ref name="alias"/>
                <interceptor-ref name="servletConfig"/>
                <interceptor-ref name="i18n"/>
                <interceptor-ref name="prepare"/>
                <interceptor-ref name="chain"/>
                <interceptor-ref name="scopedModelDriven"/>
                <interceptor-ref name="modelDriven"/>
                <interceptor-ref name="fileUpload"/>
                <interceptor-ref name="checkbox"/>
                <interceptor-ref name="multiselect"/>
                <interceptor-ref name="staticParams"/>
                <interceptor-ref name="actionMappingParams"/>
                <interceptor-ref name="params">
                    <param name="excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param>
                </interceptor-ref>
                <interceptor-ref name="conversionError"/>
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="xxx" />

   或者想办法在到达workflow Interceptor之前,把你要的值放进struts2的value stack.

struts流程参考
http://hi.baidu.com/hyy_lover/item/4b26c10e3afc0875d45a11f8
分享到:
评论

相关推荐

    struts2验证框架

    3. **值栈维护**:如果验证失败并需要返回到输入页面时,为了避免值栈中的数据丢失,可以实现`Preparable`接口并在`prepare()`方法中初始化需要的值。同时,需要在Action配置中添加`...

    struts2最全验证框架

    - 如果验证失败后返回到`input`页面,存储在`ValueStack`中的值可能会丢失。解决办法是让Action实现`Preparable`接口,并在`prepare()`方法中重新加载或初始化这些值。 - 若使用`Preparable`接口,则必须在`action`...

    Struts2 Value Stack Contents 中取值、多个集合数组

    在使用Struts2框架进行Web...- 在处理表单验证失败的情况时,应该使用转发而不是重定向,以保持服务器端的数据不丢失。 掌握这些知识点对于使用Struts2框架进行Web开发是十分重要的,尤其是在表单验证和数据展示方面。

    Struts2+mysql(含数据库等)

    - **错误处理**:展示验证失败信息,指导用户修正输入 6. ** DIGITAL数据库** - **数据库实例**:可能是指项目中使用的特定数据库实例或示例 - **数据迁移**:将已有数据导入到开发环境中,便于测试和调试 - **...

    基于Struts2的用户权限管理

    9. **错误和异常处理**:当权限问题导致操作失败时,应提供友好的错误提示,同时在后台记录详细的异常信息。 总的来说,"基于Struts2的用户权限管理"涉及到Web应用开发中的核心安全机制,结合Mysql数据库,为用户...

    struts常见错误及其分析

    如果表单验证失败,检查ActionForm类中的validate()方法是否正确实现,以及form-beans配置中的validate属性是否设置正确。同时,确保在错误发生时,错误消息能正确显示在页面上。 6. **国际化(i18n)资源包问题**...

    struts2增删改查

    这个过程中的每个步骤都可能涉及到不同的拦截器,以提供如事务管理、日志记录、权限验证等功能。 总结起来,“struts2增删改查”项目涵盖了Struts2框架的基础使用,包括Action的编写、配置文件的设定、模型与视图的...

    利用Struts2的令牌机制。

    最后,文件`struts2 异常处理.mht`可能包含了关于Struts2如何处理异常,包括令牌验证失败时的错误处理方法的详细信息。MHT文件是一种网页存档格式,可能包含了HTML、CSS和JavaScript代码,方便开发者离线查看和学习...

    ajax框架与struts框架的最佳结合讲解

    在Web开发领域,Ajax(Asynchronous JavaScript and XML)框架和Struts框架是两种常见的技术,它们各自在构建动态、交互式Web应用中扮演着重要角色。本篇文章将深入探讨如何将这两种框架有效地结合起来,以实现更...

    轻量级J2EE企业应用实战(part 3)共分5个part

    - **解决方案**:使用Struts提供的`&lt;html:text&gt;`标签替代HTML的`&lt;input&gt;`标签,可以保持表单数据在验证失败时不会丢失。这样用户即使验证未通过,也不会失去之前填写的信息,提升了用户体验。 - **代码示例**: ``...

    2014—SHH面试题

    - **请求验证失败后变量丢失**:可以将ActionForm的scope设为Session,以保留验证失败后的数据。 **Struts与Spring集成** - **直接在Action中获取Spring对象**:不推荐,因为耦合度过高。 - **Action由Spring管理**...

    upload上传下载源文件

    在处理文件上传时,Struts提供了`ActionForm`类,用于接收和验证用户输入,包括上传的文件。`File`和`FileItem`对象则用来存储上传的文件信息。 1. **文件上传** - **配置Struts-config.xml**:在配置文件中,你...

    ssh框架实现javaweb支付宝例子

    同时,应有异常处理机制,保证即使支付失败也能正确处理,避免用户数据丢失。 综上所述,这个SSH框架实现的支付宝例子涵盖了Java Web开发中的多个关键环节,包括MVC架构设计、数据库操作、第三方接口集成以及安全性...

    ssh开发小型web网站

    这样,即使登录失败,用户也不会丢失当前页面的其他信息,提高了使用体验。 总结来说,SSH框架结合Ajax的开发方式,能够快速构建出功能完善的Web应用,提供良好的用户体验。理解并熟练掌握这些技术,对于IT开发者来...

    SSH简易更新

    - **验证更新**:确保下载的文件完整无误,这可能涉及到校验和的计算。 - **暂停服务**:在更新前,系统可能需要暂停服务以防止数据不一致。 - **应用更新**:使用Hibernate等工具执行更新数据库的SQL脚本,或者...

    基于SSH框架实现的银行转账操作系统

    3. **转账模块**:接收用户转账请求,通过Spring的Service层调用DAO层方法实现转账操作,同时处理转账失败或成功的情况。 4. **记录模块**:保存转账记录,每次转账操作都会生成一条记录,便于后续的查询和审计。 ...

    Stripes 快速入门 pdf 中文版 下载

    当验证失败时,Stripes会自动收集所有的验证错误,并提供一种机制来在前端页面上显示这些错误信息。 ### 5. Resolution接口 Resolution接口是Stripes框架中的另一个关键概念,它定义了如何处理ActionBean执行后...

    EXT异步提交FORM表单

    在现代Web应用开发中,异步提交表单是一种常见的技术手段,它能够提升用户体验,减少页面刷新带来的数据丢失风险,并能有效提高系统的响应速度。EXT框架(通常指的是Ext JS)作为一种成熟且功能丰富的JavaScript库,...

Global site tag (gtag.js) - Google Analytics