Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案
2008-03-20 16:42
573 查看
Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案
比如,当我要添加一个信用卡的时候,我需要信用卡的CardType, 这些数据是存在数据库中的,我要先通过action 的一个 create方法,取到信用卡的类型:public String create()...{
creditCardTypeList = this.creditCardTypeService.getList();
return SUCCESS;
}
Struts的配置文件:
<action name="create" method="create" class="example.CreditCardAction">
<result name="success">input.jsp</result>
</action>
input.jsp
...
<s:select name="creditCard.creditCardTypeId" list="creditCardTypeList" listKey="creditCardTypeId"
listValue="ccType" />
....
当提交input.jsp 的时候,Validate 检查没有通过,这时我需要回到input.jsp,此时应该下拉列表框的CreditType应该被保留,只需要在example.CreditCardAction 实现 Preparable接口,并实现prepare 方法,然后在add的 action中加上
<interceptor-ref name="prepare"/>
<interceptor-ref name="defaultStack"/>
就可以了
prepare方法:
public void prepare()...{
creditCardTypeList = this.creditCardTypeService.getList();
}
Add Acton:
<action name="add" method="add" class="example.CreditCardAction">
<interceptor-ref name="prepare"/>
<interceptor-ref name="defaultStack"/>
<result name="input">input.jsp</result>
<result name="success" type="redirect-action">
<param name="namespace">/credit</param>
<param name="actionName">list</param>
</result>
</action>
这样,在验证前将首先调用 prepare方法,即使失败了回到input.jsp页面creditCardType选择框的值仍然存在。
<interceptor-ref name="defaultStack"/> 中的 defaultStack 是我们在struts.xml 中配置的,其中我们注释掉了 <interceptor-ref name="prepare"/> 这样在example.CreditCardAction中的其他Action就不会首先执行prepare方法,只有加上了 <interceptor-ref name="prepare"/> 的才会去首先执行 prepare方法。
<package name="project-default" abstract="true" extends="struts-default">
<interceptors>
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<!--
<interceptor-ref name="prepare"/>
-->
<interceptor-ref name="i18n"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="profiling"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<!--
<interceptor-ref name="checkbox">
<param name="uncheckedValue">no</param>
</interceptor-ref>
-->
<interceptor-ref name="staticParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo..*</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-stack>
</interceptors>
</package>
相关文章推荐
- Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案
- Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案
- Struts2 值在验证失败回到原来页面的时候会丢失的解决方案
- Struts2 值在验证失败回到原来页面的时候会丢失的解决方案
- Struts的action中用了addFieldError,页面第一次提交验证失败后,再次提交找不到action
- struts上传文件,验证失败表单数据丢失的原因
- 当用户退出点击浏览器后退仍可回到原来页面的解决方案
- 切换页面的时候出现一个页面闪一下,回到原来的界面
- struts上传文件,验证失败表单数据丢失的原因
- ASP.NET MVC 3.0:基于Ajax的表单提交,A页面认证失败后页面被强转至登录页面,待登录成功将如何回到A页面?
- 登录成功后跳回到原来页面
- ASP.NET Post页面及验证视图状态MAC失败问题的解决办法
- dedecms SP2线上安装时候出现"选择数据库失败,可能是你没权限,请预先创建一个数据库!"解决方案
- 页面刷新后让其回到滚动条原来的位置
- “IMP-00010:不是有效的导出文件,头部验证失败”的解决方案
- struts2验证失败后返回input,select中list数据丢失解决方法
- Struts中用Filter实现每个页面的登录验证(转)
- 铁通、长宽网络支付时“签名失败”问题分析及解决方案 [88222001]验证签名异常:FAIL[20131101100002-142]
- win7或win10控制面板加载页面失败解决方案
- ASP.NET MVC 3.0:基于Ajax的表单提交,A页面认证失败后页面被强转至登录页面,待登录成功将如何回到A页面?