重置Struts2令牌?

时间:2012-08-17 18:25:54

标签: struts2 token interceptor

我有一个令牌拦截器来阻止双重提交一个效果很好的表单,但我希望在情况下重置令牌。

基本上我在页面中得到的是标准列表和提交按钮。当用户单击提交按钮时,条件将作为新行存储在数据库的特定表中。 ajax调用使用成功或失败的消息更新表单下方的div。令牌的作用是我不希望用户尝试添加重复的行。但是,如果用户更改条件(通过在下拉菜单中选择其他选项或编辑s:textfield中的文本),我希望它重置令牌以允许再次提交表单。目前,用户必须返回并填写一个有点不方便的新表格。

我在struts.xml中的.jsp和拦截器行中使用标准的s:标记。我一直在寻找重置令牌的东西,但我还没找到任何东西。感谢。

2 个答案:

答案 0 :(得分:2)

令牌是"struts.token"下会话中的值,格式为"struts.token.name"

由于您在最简单的情况下制作Ajax请求可能是将会话令牌设置为表单中已有的任何内容,或者创建自己的令牌拦截器(它很短,尽管它使用静态TokenHelper类,这是一个不幸记录并记录为要做的事情),它改变了"多个"的定义。提交。 (形式上的哈希?不确定,从未考虑过这么多。)

答案 1 :(得分:0)

我在google上找不到任何答案,我似乎没有得到任何答案,所以我做的是创建一个名为“Clear Form”的新按钮,它调用一些javascript来刷新页面,因此重置了令牌和表格。不是最优雅,但它有效。