我试图这样做,以便一旦我提交此表单我无法点击后退按钮,但使用当前配置我甚至无法获取页面/表单加载。我似乎无法弄清楚为什么“invalid.token”总是被触发,因此将我重定向到index.jsp,无论我在我的表单中有什么令牌标签,就像我想的那样。如果我使用“excludeMethods”过滤器并排除View然后我的页面加载,但我可以自由地点击后退按钮,所以它仍然无法正常工作。我试过在我的noLoginStack上方和下方移动interceptor-ref,但它没有什么区别。根据我的调试,我的实际java类甚至没有被命中,所以它在此之前就失败了。我做错了什么?
我的行动声明:
<action name="viewAppointmentLetter" class="edu.ucr.c3.rsummer.controller.instructor.ManageAppointmentLetters">
<interceptor-ref name="noLoginStack"/>
<interceptor-ref name="token" />
<result name="invalid.token">/index.jsp</result>
<result name="error" type="redirectAction">index.do</result>
<result name="input">/instructor/assigned_appts.jsp</result>
<result name="view">/instructor/assigned_appts.jsp</result>
<result type="redirectAction">index.do</result>
</action>
我的assigned_appts.jsp:
<s:form action="saveAppointmentLetter" onsubmit="return verifySubmit();">
<s:token name="token" />
.....
</s:form>
如果有任何线索我总是在我的控制台中得到这个
WARN org.apache.struts2.util.TokenHelper - Could not find token name in params.
答案 0 :(得分:1)
在struts2中,拦截器的顺序是非常重要。你应该遵循这个命令。
<interceptor-ref name="token"/>
<interceptor-ref name="noLoginStack"/>
答案 1 :(得分:0)
USe TokenSession interceptor.Had在struts.xml中以特定操作处理result name="invalid.token"
的结果。
在该页面上生成操作的页面,您必须在标题
<s:token>
标记