# 防重复提交

建议防重复提交应用场合有一定的限制,按实际场景考虑

# 本内容你将获得

  • 防重复提交集成

# 重复集成

# 设计流程

此处防重复提交基于 token 设计,防重复提交流程:

  • 在进入页面的时候,生成 token,并保存在 Session 中
  • 在添加页面添加 token 标题
  • 首次提交,验证 token,同时清理
  • 二次提交验证是否有 token,如没有则返回 token 错误,且后台报错

# 验证操作

进入页面控制层,添加注解@FormToken,注意此处参数一定要添加Httpservletrequest,否则不生效,如:

@FormToken(save=true)
@GetMapping("/add")
public void add(Model model , HttpServletRequest request){

}

在页面<form>标签中添加 token 值,如:

<form class="form-horizontal" id="addForm">
    <input type="hidden" name="formToken" th:value="${session.formToken}" />
    <!-- 以下为表单字段 -->
</form>

在保存的方法中去掉 token,如:

@FormToken(remove=true)
@ResponseBody
@PostMapping("/save")
public ResponseBean save(Model model , HttpServletRequest request, DTO dto) {
    // 业务内容

    return ResponseGenerator.ok(null) ;
}

如此集成即可