如何使用spring+thymeleaf+hibernate处理唯一字段

yftpprvb  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(273)

我在做一个演示网站,如果实体“academy”的字段“name”已经存在,就需要显示一条错误消息。我无法显示“帮助块”。
目标:
在页面中显示类似“名称不可用”的消息
现有名称引发唯一约束冲突
用try-catch块处理异常?
这是不报告错误的html块,请注意元素不起作用:

  1. <form class="needs-validation" novalidate th:object="${academy}" th:action="@{/academy/new}" method="POST">
  2. <input type="hidden" th:field="*{id}">
  3. <div class="row">
  4. <div class="col-sm-6 offset-sm-3 form-group form-check">
  5. <label for="academy_name"> Name </label>
  6. <input th:field="*{name}" id="academy_name" type="text" class="form-control" placeholder="academy name" required minlength="3" maxlength="255">
  7. <small class="text-muted"> * Required. </small>
  8. <span class="help-block" th:if="${#fields.hasErrors('*')}">
  9. <label>ERRORS</label>
  10. <ul>
  11. <li th:each="err : ${#fields.errors('*')}" th:text="${err}"></li>
  12. </ul>
  13. </span>
  14. </div>
  15. </div>
  16. <div class="col-sm-6 offset-sm-3 form-group form-check">
  17. <button type="submit" class="btn btn-primary"> Add </button>
  18. </div>
  19. </form>

这是我的控制器类,请注意,我正在检查名称是否存在,以便不会得到“唯一约束冲突”:

  1. @PostMapping("/academy/new")
  2. public String saveAcademy(@Valid @ModelAttribute AcademyDTO academyDTO,
  3. Model model, BindingResult bindingResult) {
  4. log.debug("saveAcademy()");
  5. if (academyService.existsByName(academyDTO.getName())) {
  6. model.addAttribute("academy", academyDTO);
  7. model.addAttribute("academies", academyService.findAll());
  8. bindingResult.addError(new FieldError("academy", "name", "This name already exists"));
  9. return ACADEMY_URL;
  10. }
  11. academyService.saveAcademy(academyDTO);
  12. return "redirect:/academy";
  13. }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题