Как обрабатывать УНИКАЛЬНОЕ поле с помощью Spring + Thymeleaf + Hibernate - PullRequest
0 голосов
/ 04 августа 2020

Я работаю над демонстрационным веб-сайтом, на котором необходимо отображать сообщение об ошибке, если поле «имя» сущности «Академия» уже существует. Я не могу отобразить «блок помощи».

Цели:

  • Отображать на странице сообщение типа «Имя недоступно»
  • An существующее имя вызывает нарушение уникального ограничения
  • Обработать исключение с помощью блока try-catch?

Это блок html, который не сообщает об ошибке, обратите внимание, что элемент не 'не работает:

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

Вот мой класс контроллера, обратите внимание, что я проверяю, существует ли имя, поэтому я не получаю «нарушение уникального ограничения»:

    @PostMapping("/academy/new")
    public String saveAcademy(@Valid @ModelAttribute AcademyDTO academyDTO,
                              Model model, BindingResult bindingResult) {

        log.debug("saveAcademy()");

        if (academyService.existsByName(academyDTO.getName())) {

            model.addAttribute("academy", academyDTO);

            model.addAttribute("academies", academyService.findAll());

            bindingResult.addError(new FieldError("academy", "name", "This name already exists"));

            return ACADEMY_URL;
        }
        academyService.saveAcademy(academyDTO);

        return "redirect:/academy";
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...