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
分享到:
相关推荐
3. **值栈维护**:如果验证失败并需要返回到输入页面时,为了避免值栈中的数据丢失,可以实现`Preparable`接口并在`prepare()`方法中初始化需要的值。同时,需要在Action配置中添加`...
- 如果验证失败后返回到`input`页面,存储在`ValueStack`中的值可能会丢失。解决办法是让Action实现`Preparable`接口,并在`prepare()`方法中重新加载或初始化这些值。 - 若使用`Preparable`接口,则必须在`action`...
在使用Struts2框架进行Web...- 在处理表单验证失败的情况时,应该使用转发而不是重定向,以保持服务器端的数据不丢失。 掌握这些知识点对于使用Struts2框架进行Web开发是十分重要的,尤其是在表单验证和数据展示方面。
- **错误处理**:展示验证失败信息,指导用户修正输入 6. ** DIGITAL数据库** - **数据库实例**:可能是指项目中使用的特定数据库实例或示例 - **数据迁移**:将已有数据导入到开发环境中,便于测试和调试 - **...
9. **错误和异常处理**:当权限问题导致操作失败时,应提供友好的错误提示,同时在后台记录详细的异常信息。 总的来说,"基于Struts2的用户权限管理"涉及到Web应用开发中的核心安全机制,结合Mysql数据库,为用户...
如果表单验证失败,检查ActionForm类中的validate()方法是否正确实现,以及form-beans配置中的validate属性是否设置正确。同时,确保在错误发生时,错误消息能正确显示在页面上。 6. **国际化(i18n)资源包问题**...
这个过程中的每个步骤都可能涉及到不同的拦截器,以提供如事务管理、日志记录、权限验证等功能。 总结起来,“struts2增删改查”项目涵盖了Struts2框架的基础使用,包括Action的编写、配置文件的设定、模型与视图的...
最后,文件`struts2 异常处理.mht`可能包含了关于Struts2如何处理异常,包括令牌验证失败时的错误处理方法的详细信息。MHT文件是一种网页存档格式,可能包含了HTML、CSS和JavaScript代码,方便开发者离线查看和学习...
在Web开发领域,Ajax(Asynchronous JavaScript and XML)框架和Struts框架是两种常见的技术,它们各自在构建动态、交互式Web应用中扮演着重要角色。本篇文章将深入探讨如何将这两种框架有效地结合起来,以实现更...
- **解决方案**:使用Struts提供的`<html:text>`标签替代HTML的`<input>`标签,可以保持表单数据在验证失败时不会丢失。这样用户即使验证未通过,也不会失去之前填写的信息,提升了用户体验。 - **代码示例**: ``...
- **请求验证失败后变量丢失**:可以将ActionForm的scope设为Session,以保留验证失败后的数据。 **Struts与Spring集成** - **直接在Action中获取Spring对象**:不推荐,因为耦合度过高。 - **Action由Spring管理**...
在处理文件上传时,Struts提供了`ActionForm`类,用于接收和验证用户输入,包括上传的文件。`File`和`FileItem`对象则用来存储上传的文件信息。 1. **文件上传** - **配置Struts-config.xml**:在配置文件中,你...
同时,应有异常处理机制,保证即使支付失败也能正确处理,避免用户数据丢失。 综上所述,这个SSH框架实现的支付宝例子涵盖了Java Web开发中的多个关键环节,包括MVC架构设计、数据库操作、第三方接口集成以及安全性...
这样,即使登录失败,用户也不会丢失当前页面的其他信息,提高了使用体验。 总结来说,SSH框架结合Ajax的开发方式,能够快速构建出功能完善的Web应用,提供良好的用户体验。理解并熟练掌握这些技术,对于IT开发者来...
- **验证更新**:确保下载的文件完整无误,这可能涉及到校验和的计算。 - **暂停服务**:在更新前,系统可能需要暂停服务以防止数据不一致。 - **应用更新**:使用Hibernate等工具执行更新数据库的SQL脚本,或者...
3. **转账模块**:接收用户转账请求,通过Spring的Service层调用DAO层方法实现转账操作,同时处理转账失败或成功的情况。 4. **记录模块**:保存转账记录,每次转账操作都会生成一条记录,便于后续的查询和审计。 ...
当验证失败时,Stripes会自动收集所有的验证错误,并提供一种机制来在前端页面上显示这些错误信息。 ### 5. Resolution接口 Resolution接口是Stripes框架中的另一个关键概念,它定义了如何处理ActionBean执行后...
在现代Web应用开发中,异步提交表单是一种常见的技术手段,它能够提升用户体验,减少页面刷新带来的数据丢失风险,并能有效提高系统的响应速度。EXT框架(通常指的是Ext JS)作为一种成熟且功能丰富的JavaScript库,...