防止表单重复提交机制在JSF2中的实现
防止表单重复提交机制在JSF2中的实现
在B/S系统开发过程中,关于如何防止表单的重复提交问题,也是一个老生常谈的问题,这里说说如何在JSF2的开发环境下防止表单重复提交。
问题解决的思路基本和struts的思路是一致的,那就是
1.生成一个字符串(token),放置在session里,
2.在表单生成时,同时把这个token作为表单的一部分,放置在一个hidden input中,
3.表单提交时,在backingbean中验证一下页面提交过来的token是否和session中的一致。
4.业务完成之后,重置一下token.
因为如果是用浏览器的后退按钮退回到表单页面的话,表单的内容是不会变化的,包括表单里面的token,这样在后退再
提交的时候,由于session中的token已经重置,这时候,我们就认为提交是失败的。
具体实现比较简单,经过2次重构,已经有了比较友好的使用体验。
首先是一个session级的bean, 用它来存储和操作token
然后需要一个Tag,
总结:得益于JSF2的大幅改进,使得编写一个标签组件是如此的容易,另外,也要感谢一下struts提供的思路
本文系原创,首发Iteye.com, 作者: Bill
