2012-08-17 77 views
0

我有一个令牌拦截器来阻止双提交表单,这很好用,但我希望在某些情况下重置该令牌。重置Struts2令牌?

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

我在struts.xml中的.jsp和interceptor行中使用标准的s:token。我一直在寻找东西来重置令牌,但我还没有找到任何东西。谢谢。

回答

2

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

由于您在最简单的情况下发出Ajax请求,可能会将会话令牌设置为已在窗体中的任何内容,或者创建自己的令牌拦截器(虽然它使用静态TokenHelper类,这是不幸的–注意到并记录为可以做的事情),这改变了“多个”提交的定义。 (形式瓦尔斯哈希?不知道,从来没有给过这么多的想法。)

+0

谢谢,绝对是一个点在正确的方向 – user1287523 2012-08-21 14:21:17

0

我找不到任何答案在谷歌,我似乎没有得到任何答案,所以我做的是创建一个名为“清除表单”的新按钮,它调用一些JavaScript刷新页面,因此重置令牌和表单。不是最优雅的,但它的工作原理。