Struts2令牌拦截器总是失败

时间:2012-02-28 23:32:22

标签: struts2 token interceptor

我试图这样做,以便一旦我提交此表单我无法点击后退按钮,但使用当前配置我甚至无法获取页面/表单加载。我似乎无法弄清楚为什么“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.

2 个答案:

答案 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>标记