在页面上加入<s:token/>
刷新仍然提交,生成的Html代码变成两行
<input type="hidden" name="struts.token.name" value="struts.token" />
<input type="hidden" name="struts.token" value="KHOWBO3B50WKA5D4P9ACAK24OCR1EN1K" />
为什么token失效了

解决方案 »

  1.   

    struts2 token使用:1>.引用tokenInterceptor拦截器。
    2>.画面上使用<s:token />标签。
    3>.配置invalid.token逻辑视图。
      

  2.   

    问题很复杂,我是从第一个Action跳到的页面,而这个页面里也有一个需要提交的Action(第二个Action),我已经试过楼上的办法,但是这次会影响么第二个Action的提交,具体的说,我从一个BrowseAction里拿到一些数据记录,然后跳到浏览页面显示这个页面,但是这个页面还包含另一张表,用来增加记录的form,我尝试楼上的方法,跳到浏览页面后,增加数据后不提交反而会跳到配置的invalid.token逻辑视图。
      

  3.   

    <package name="TestStruts" extends="struts-default">   
        <interceptors>   
        <interceptor-stack name="myStack">   
            <interceptor-ref name="token"/>   
            <interceptor-ref name="token-session"/>   
        <interceptor-ref name="defaultStack" />                
        </interceptor-stack>   
        </interceptors>   
        <default-interceptor-ref name="myStack" />   
        <action name="Login" class="com.unmi.struts2.action.LoginAction">   
            <result name="input">/login.jsp</result>   
            <result name="invalid.token">/exception.jsp</result>   
        </action>   2
    为action启用<action name="Login" class="com.unmi.struts2.action.LoginAction">   
        <interceptor-ref name="token" />   
        <interceptor-ref name="token-session" />   
        <interceptor-ref name="defaultStack" />   
        <result name="input">/login.jsp</result>   
        <result name="invalid.token">/exception.jsp</result>    
    </action>   
    注意 token、token-session 和 defaultStack 的顺序要保证,还需要加上名为 "invalid.token" 的 result,当发现重复提交时转向到这个逻辑页,如 /exception.jsp,在 /exception.jsp 加上 <s:actionerror /> 在出现重复提交时就会提示:The form has already been processed or no token was supplied, please try again.
      

  4.   

    那把src贴出来。
    或者发到我的信箱[email protected]