问题:
解决表单重复提交,由于修改和删除是根据ID进行相关操作,所以没有重复提交的问题,重复提交主要是解决添加操作。
实现步骤及思路:
1. 用户单击添加链接时,进入PrepareAddTokenAction预处理操作
,在当前会话创建一个令牌,然后把请求转发到添加页面addToden.jsp
2. 添加页面使用<html:form>标签在客户端产生一个令牌(自动产生,通过隐藏域,可查看IE源文件)
,输入数据后提交请求给AddTokenAction执行添加业务操作,之后跳转到ListTokenAction查询数据列表
3. 关键的问题在这一步,当用户刷新该数据列表页时,因为此时的IE浏览器的URL还是添加操作时的路径
,所以添加请求将被再次请交,为避免这种情况,我们在AddTokenAction执行添加之前
,验证客户端的令牌值是否与用户会话中的一致(也就是在PrepareAddTokenAction中保存的令牌值)
,从而决定是否是重复提交。
更详细的实现请查看代码。
注意:本示例需要struts1.2支持,请自行添加相关jar包!