Struts2<br>ラベルフォームの複数回のコミットを防止


1、  Struts2     ,      token  。  :
……
Java  
<%@ taglib uri="/struts-tags" prefix="s" %>  
……  
<s:form action="page1" theme="simple">  
<s:datetimepicker name="order.date" label="    " toggleType="explode" value="today"/><br/>  
<s:token/>  
<s:reset/><s:submit/>  
   </s:form> 

<%@ taglib uri="/struts-tags" prefix="s" %>
……
<s:form action="page1" theme="simple">
<s:datetimepicker name="order.date" label="    " toggleType="explode" value="today"/><br/>
<s:token/>
<s:reset/><s:submit/>
   </s:form>

2、 struts       token   。  :
Java  
<?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="lee" extends="struts-default">  
<action name="page1" class="org.bruce.Page1">  
<interceptor-ref name="defaultStack" />  
<interceptor-ref name="token" />  
<result>/page1.jsp</result>  
<result name="invalid.token">/page1error.jsp</result>  
</action>  
</package>  
</struts> 

<?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="lee" extends="struts-default">
<action name="page1" class="org.bruce.Page1">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
<result>/page1.jsp</result>
<result name="invalid.token">/page1error.jsp</result>
</action>
</package>
</struts>  ,  name invaid.token result。                ,      。

3、invaid.token        ,      struts  。  :
<s:actionerror/>

  :
1、JSP  <s:token/>     ,Struts2     GUID(        )  session ,       hidden  form 。
2、token         form   token session    session  equals。  equals   Action。         invaid.token  ,Action          

---------------------------------------------------------------------------------
    token                  ,        ,       struts2                  。   

             ,                     token 。   action   TokenInterceptor,  struts.xml         。
Java  

   1. <action name="register" class="UserAction" method="register"> 
   2.     <result>register_success.jsp</result> 
   3.     <result name="input">register.jsp</result> 
   4.     <result name="invalid.token">register.jsp</result> 
   5.     <interceptor-ref name="token"></interceptor-ref> 
   6.     <interceptor-ref name="defaultStack"></interceptor-ref> 
   7. </action>      

<action name="register" class="UserAction" method="register">
<result>register_success.jsp</result>
<result name="input">register.jsp</result>
<result name="invalid.token">register.jsp</result>
<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>

    <result name="invalid.token">register.jsp</result>”           ,              ,             ;“<interceptor-ref name="token"></interceptor-ref>”   TokenInterceptor         ,   The form has already been processed or no token was supplied, please try again。       struts.messages.invalid.token    ,           。  :struts.messages.invalid.token=         ,       。