wml

重复提交的处理

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 阅读(814) 评论(0)  编辑  收藏 所属分类: WebWork