java代码:
<action name="register" class="sl.struts.nineteen.TokenTestAction">
<result name="success">/nineteenToken/regSuccess.jsp</result>
<result name="s">/nineteenToken/s.jsp</result>
<result name="input">/nineteenToken/input.jsp</result>
<result name="invalid.token" type="chain">
<param name="actionName">register</param>
<param name="method">test3</param>
</result>
<interceptor-ref name="token">
<param name="includeMethods">test</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
</action>
这里我想让token执行好后,不是跳转到一个页面,而是使用chain跳转到指定action的指定方法中去执行,现在这段代码能到的是你重复提交后,它没有使用register指定的test3(),而是跳到了<input name="input">中去执行了.
解决方法:
<action name="register" class="sl.struts.nineteen.TokenTestAction">
<result name="success">/nineteenToken/regSuccess.jsp</result>
<result name="s">/nineteenToken/s.jsp</result>
<result name="input" type="chain">
<param name="actionName">register</param>
<param name="method">retest</param>
</result>
<result name="invalid.token" type="chain">
<param name="actionName">testbb</param>
<param name="method">test3</param>
</result>
<interceptor-ref name="token">
<param name="includeMethods">test</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
</action>
<action name="testbb" class="sl.struts.nineteen.TokenTestAction">
<interceptor-ref name="chain" />
<interceptor-ref name="basicStack" />
//这两个过滤器一定得加
<result name="s">/nineteenToken/s.jsp</result>
</action>
就是把actionName指定的action重新写成另外一个action就行了
博文出处