浏览 4672 次
锁定老帖子 主题:struts2中表单重复提交的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-09
以前的 html: <s:form action="topic" method="post"> <s:token name="topic.name"/> </s:form> struts.xml: <action name="topic_*" method="{1}" class="topicAction"> <result name="success">/topic/manage_topic.jsp</result> <result name="invalid.token" type="dispatcher">/common/noBack.jsp</result> <interceptor-ref name="defaultStack" /> <interceptor-ref name="token"> <param name="includeMethods">addTopicElement</param> </interceptor-ref> <interceptor-ref name="token"> <param name="excludeMethods">default</param> </interceptor-ref> </action> 注意: 【1】: <s:token>标签创建一个新的令牌值,并用你所指定的令牌名把令牌保存到session中。而这个令牌值是随即产生的经过加密的字符序列,不会重复。 其次需要为action配置TokenInterceptor或者TokenSessionStoreInterceptor拦截器。这两个拦截器都已经在struts-default.xml中定义,但没有包含在defaultStack拦截器栈中。 【2】: <interceptor-ref name="token"/>和<interceptor-ref name="defaultStack"/>是两个拦截器的配置,目的是为了接收页面传入 的token令牌及参数,<result name="invalid.token">/common/noBack.jsp</</result>指当发现重复提交时,需要流转到的页面. 【3】: excludeMethods指定要排除的方法,includeMehtods是要拦截的方法。 如果是用javascript来提交的话,看下边---- function selectA() { var url = "relation_addRelationshipTopic.do?relation.rnId=<%=rn != null ? rn.getId().longValue() : -1%>&relation.selectRn="+selectRn+"&fresh=" + Math.random()+""; var token = "struts.token.name=relation.token"; var token2 = "relation.token="; token2 += document.getElementsByName("relation.token")[0].value; url += "&" + token + "&"; url += token2; location = url; } 注: <s:token name="relation.token"/> 它回自动的生成两个hidden,一个是struts.token.name,一个是reletion.token. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |