重復提交的處理
xwork.xml 的配置:
這個攔截器可以保證一個令牌對應一個請求。確保后退按鈕和兩次提交不會產生不希望的效果。 例如你可以使用這個來防止粗心的用戶在在線商店點了兩下"結帳"按鈕。這個攔截器使用了非常簡單的機制來處理非法令牌:返回一個invliad.token的結果,這樣你就可以在action配置中做映射了。一個復雜一些的實現是TokenSessionStoreInterceptor, 可以在發現非法令牌時提供更好的處理邏輯。
注意: 為了設置表單的令牌,你必須使用token標簽。 這個標簽放在表單中,并且這個表單是提交到受這個攔截器保護的action:任何不提供令牌(使用token標簽產生的)的請求將被處理為非法請求
國際化注意事項:這個攔截器用下面的鍵作為錯誤信息。
注意: 因為這個攔截器是擴展于MethodFilterInterceptor, 所以可以決定在action中的哪些方法上應用它。
<action name="someAction" class="com.examples.SomeAction">
<interceptor-ref name="token"/>
<interceptor-ref name="basicStack"/>
<result name="success">good_result.ftl</result>
</action>
<-- 在這個例子中,action的myMethod方法不會做令牌檢查 -->
<action name="someAction" class="com.examples.SomeAction">
<interceptor-ref name="token">
<param name="excludeMethods">myMethod</param>
</interceptor-ref name="token"/>
<interceptor-ref name="basicStack"/>
<result name="success">good_result.ftl</result>
</action>
表單的配置 :
<ww:token />
防止多次提交表單.
使用token標簽能幫助解決多次提交表單的問題.此標簽需要你啟用TokenInterceptor 或者TokenSessionInterceptor攔截器.
ww:token標簽只不過放置了一個隱藏的表單元素,它包含一個唯一的令牌.
例子:
<form name="demoForm" action="someAction.action" method="Post">
<ww:token />
</form>
posted on 2006-07-25 12:11 wml 閱讀(826) 評論(0) 編輯 收藏 所屬分類: WebWork