0

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

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

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

4

2 回答 2

2

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

由于您在下面发出 Ajax 请求,最简单的方法可能是将会话令牌设置为表单中已有的任何内容,或者创建您自己的令牌拦截器(它很短,尽管它使用静态 TokenHelper 类,这是不幸的–注意并记录为要做的事情)更改“多次”提交的定义。(形式 vals 的哈希?不确定,从来没有考虑过这么多。)

于 2012-08-17T21:14:11.353 回答
0

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

于 2012-08-17T20:35:23.667 回答