配置重复提交的代码后遇到的空指针问题
2009-08-20 10:36
585 查看
如果在提交的时候想用struts2.1.6的重复提交功能。
会遇到莫名其妙的空指针的错误,如果把相关的<s:token/>等关于重复提交的配置
去掉就会一切正常,一加上Action所有的属性全部为空.
诊对这个问题,如果加上其它的拦截器如token的拦截器,那么struts2.1.6默认的拦截器
不会被执行,而为Action中的对象赋值刚好是默认拦截器的功能.
因此解决方法就是我们在配置过struts2.1.6重复提交的拦截器功能后还要手动的配置一下
默认的拦截器,否则前台页面提交的东西就不能自动的为Action进行赋值
相关的代码如下:
Struts.xml的配置文件如下:
还有一个问题就是:
如果正常输入进行提交是可以的,但是如果重复提交,报错后.不管咋样不能正常提交,即使输入的数据正确,也不能成功
一些错误需要清理一下.如果不清理,会永远保留于内存之中,每次提交的时候会检测的.
struts2.1.6提供了解决方案.
让Action类继承自Preparable,
并实现方法clearErrorsAndMessages().
在这个方法里面清除错误.
清除代码如下:
this.clearErrorsAndMessages();
关于Action重复提交的<s:token/>本人还遇到了一个问题:
如果当前Action配置了该标签,想用一个超链接链接到Action时会报错误,即跳转到invalid.token所配置的页面.
这是因为只要配置了<s:token/>标签Struts每次会去检测的.链接里面没有Stoken,所以会报这样的错误.
解决的办法是:
为当前的Action重新配置一个ACtion,不要配置<s:token/>.也就是说专门为含有表单的提交配置一个Action.
示例代码如下:
以上是本人使用Struts2.1.6的心得,如果有哪些地方本人理解的不对,还请高手指点一下.
会遇到莫名其妙的空指针的错误,如果把相关的<s:token/>等关于重复提交的配置
去掉就会一切正常,一加上Action所有的属性全部为空.
诊对这个问题,如果加上其它的拦截器如token的拦截器,那么struts2.1.6默认的拦截器
不会被执行,而为Action中的对象赋值刚好是默认拦截器的功能.
因此解决方法就是我们在配置过struts2.1.6重复提交的拦截器功能后还要手动的配置一下
默认的拦截器,否则前台页面提交的东西就不能自动的为Action进行赋值
相关的代码如下:
Struts.xml的配置文件如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="default" namespace="/member" extends="struts-default"> <action name="memberAction_*" class="memberAction" method="{1}"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="token" /> <result name="input">/regsiter.jsp</result> <result name="success">/WEB-INF/jsp/member/regsucced.jsp </result> <!-- 重复提交后所要跳转的页面 --> <result name="invalid.token">/error/error.jsp</result> </action> </package> </struts>
还有一个问题就是:
如果正常输入进行提交是可以的,但是如果重复提交,报错后.不管咋样不能正常提交,即使输入的数据正确,也不能成功
一些错误需要清理一下.如果不清理,会永远保留于内存之中,每次提交的时候会检测的.
struts2.1.6提供了解决方案.
让Action类继承自Preparable,
并实现方法clearErrorsAndMessages().
在这个方法里面清除错误.
清除代码如下:
this.clearErrorsAndMessages();
关于Action重复提交的<s:token/>本人还遇到了一个问题:
如果当前Action配置了该标签,想用一个超链接链接到Action时会报错误,即跳转到invalid.token所配置的页面.
这是因为只要配置了<s:token/>标签Struts每次会去检测的.链接里面没有Stoken,所以会报这样的错误.
解决的办法是:
为当前的Action重新配置一个ACtion,不要配置<s:token/>.也就是说专门为含有表单的提交配置一个Action.
示例代码如下:
<action name="memberRegAction_*" class="memberAction" method="{1}"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="token" /> <result name="input">/regsiter.jsp</result> <result name="success"> /WEB-INF/jsp/member/regsucced.jsp </result> <!-- 重复提交后所要跳转的页面 --> <result name="invalid.token">/error/error.jsp</result> </action> <action name="findMem_*" class="memberAction" method="{1}"> <result name="freemaker" type="freemarker"> /WEB-INF/template/jsp1.ftl </result> <result name="input">/regsiter.jsp</result> <result name="success"> /WEB-INF/jsp/member/regsucced.jsp </result> </action>
以上是本人使用Struts2.1.6的心得,如果有哪些地方本人理解的不对,还请高手指点一下.
相关文章推荐
- mybatis generator配置详解及遇到生成代码重复问题
- 处理重复提交表单时遇到的问题
- 向github提交代码时可能会遇到的一点小问题
- Git问题Everything up-to-date解决__提交代码遇到『Everything up-to-date』
- 用sourceTree提交代码时遇到的问题
- 防止刷新/后退引起的重复提交问题的Java Token代码,非Struts
- 防止刷新/后退引起的重复提交问题的Java Token代码,非Struts
- GitHUb 代码提交遇到的问题以及解决办法
- 通过xml配置搞定Struts重复提交问题
- 初识Spring配置,看代码遇到的问题.
- 安卓开发中用eclipse提交代码到github遇到的rejected-non-fast-forward问题
- 从本地提交代码到github遇到的一些问题
- 向Github提交代码时遇到的一些问题
- 用sourceTree提交代码时遇到的问题
- 向Github提交代码时遇到的一些问题
- 在Git上提交代码时遇到的问题
- <转>防止刷新/后退引起的重复提交问题的Java Token代码,非Struts
- <转>,防止刷新/后退引起的重复提交问题的Java Token代码,非Struts
- 面试中遇到的问题:一个指针重复释放会出现什么情况
- 防止刷新/后退引起的重复提交问题的Java Token代码