JSF提交按钮-表单在一秒钟内被提交X次(直到重新创建视图)-如何防止它
JSF submit button - form is X times submited during one second (until view recreated) - how to prevent it?
我有一个问题,当我提交表单(按ENTER键或点击鼠标)-如果我按它x倍快,然后实际视图被重新创建(例如十次在一秒钟),表单数据发送十次和十次被保存到数据库。
无论是否有一些验证,例如检查数据只能保存一次。
下一次提交,视图刷新后,工作正常。数据没有保存,因为验证器正在工作。
所以,恶意用户填写表单,而不是正常提交,他快速点击提交按钮,直到视图被重建,我有X记录在数据库中,而不是一个:-)
我怎样才能防止这种奇怪的行为?
如何禁止按提交按钮,直到视图重建?
您可能想要添加一些像DoubleClickFilter到您的web.xml
。另一种方法是使用Tokens
,您验证每个请求并在第一个请求后失效,以便后续请求无法通过您的验证。
解决方案:
//Initialize our submit flag to false
var formSubmitted = false;
/**
* Prevent from submitting a form more than once
* @returns {Boolean}
*/
function submitForm()
{
//has the form been submitted before?
if( formSubmitted == true )
{
alert("This form has already been submitted!");
return false;
}
formSubmitted = true;
return true; // Submit form
}
和提交按钮:
<h:commandButton ... action="#{bean.action}" onclick="return submitForm();"/>
相关文章:
- 如何使用Java脚本创建提交按钮's的拖放功能
- 如何创建动态ajax提交表单
- 在提交之前创建文本区域预览
- 使用javascript创建Form元素,并在不重定向/刷新的情况下提交
- 提交在弹出窗口中创建的表单
- 创建一系列定时表单提交
- 不会提交通过 DOM 创建的<输入>值
- Javascript创建的元素不会在提交时发布
- Rails/Ajax 在提交后将表单从创建更改为更新
- 每次提交表单时都使用新名称创建对象
- asp.net mvc 服务器是否可以查看在父级执行提交时动态创建的控件
- JQuery / Javascript弹出框和表单提交创建
- 保持提交按钮处于禁用状态,直到填充动态创建的必填字段
- 在表中创建提交按钮
- HTML 正在创建提交重定向
- 如何创建一个计数器循环,该循环在单击提交按钮时启动,并输出多行单词,每个单词前面都有一个数字
- Javascript表单提交会创建大量的POST请求(多次提交)
- jQuery创建的表单字段在提交时返回“undefined”
- JSON 的新增内容.如何在提交表单时创建 json 文件以及在何处查看它
- 通过表单提交创建 JSON 文件