Grails 防止表单重复提交

如题:

    当填写完一个表单,点击提交,创建一条新数据的时候,当创建成功时,点击浏览器的后退按钮,又点击提交按钮,这时可能会出现表单重复提交的可能,因为表单中没有唯一项,而ID又是数据库自动生成的,故而能够再次创建一条和上面重复的数据,如何避免这种情况?

    1.给表单中的选项的某些字段设置成唯一的,这样重复提交表单就不会再次创建一条新的数据了。

    2.在进入创建页面的时候,就生成一个ID,隐藏在页面中,提交表单后将之前创建的ID作为这条数据的ID,这样当点击浏览器的返回时,该ID还是之前创建出来的ID,因此能够避免重复提交。

    3.利用令牌机制,如struts2中的令牌,亦可。但是Grails中是否也有令牌呢?答案是肯定的,查阅Grails API可以知道,在Controller下的withForm,可以实现。

如:

withForm {
  // 第一次提交表单
 // good request
}.invalidToken { 
    // 重复提交表单
 // bad request}
但是,在此之前得在表单页面的form添加

<g:form useToken="true" ...>

 如此,在Grails中能解决表单重复提交

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值