Каждый пример в inte rnet дает только это решение, я думаю, что схожу с ума от этого, что я пытаюсь добиться проверки работоспособности RedirectView
или redirect:
в Spring Boot и Thymeleaf. Мои методы довольно просты, и я не использую какую-либо настройку в моей логи c.
Начиная с методов, которые обрабатывают логи c для этого - вот метод, который загружает страница с формой:
@GetMapping("/groups")
public ModelAndView showGroups(
Model model,
RedirectAttributes redirectAttributes
) {
Group group = new Group();
Iterable<Group> groupsList = groupsService.findAll(Sort.by(Sort.Direction.DESC, "id"));
model.addAttribute("group", group);
model.addAttribute("groupsList", groupsList);
Iterable<TerritorialSubdivision> territorialSubdivisionsList = territorialSubdivisionsService.findAll();
model.addAttribute("territorialSubdivisionsList", territorialSubdivisionsList);
return new ModelAndView("members/groups");
}
А вот метод, который отправляет форму
@PostMapping("groups/add")
public ModelAndView addGroup(
@Valid Group group,
BindingResult bindingResult,
Model model,
RedirectAttributes redirectAttributes
) {
if (bindingResult.hasErrors()) {
logger.warn("Group add error!");
redirectAttributes.addFlashAttribute("group", group);
redirectAttributes.addFlashAttribute("org.springframework.validation.BindingResult.group", bindingResult);
return new ModelAndView(new RedirectView("/members/groups"));
}
groupsService.save(group);
return new ModelAndView(new RedirectView("/members/groups"));
}
Группа сущность имеет эти аннотации
@NotNull
@Size(min = 6, max = 45)
@Column(name = "name")
private String name;
@NotNull
@ManyToOne
@JoinColumn(name = "territorial_subdivision_id", referencedColumnName = "id")
private TerritorialSubdivision territorialSubdivisionsByTerritorialSubdivisionId;
Frontend
<form th:action="@{/members/groups/add}" th:object="${group}" th:method="POST">
<div th:if="${#fields.hasErrors('*')}">
<p th:each="err : ${#fields.errors('*')}" th:text="${err}"></p>
</div>
<label th:text="${T(md.svpm.enums.Messages.Groups).NAME}"></label>
<input th:field="*{name}" type="text" class="md-input" placeholder=""/>
<label th:text="${T(md.svpm.enums.Messages.Groups).TERRITORIAL_SUBDIVISION}"></label>
<select name="territorialSubdivisionsByTerritorialSubdivisionId" class="md-input">
<option value="0" disabled selected hidden th:text="${T(md.svpm.enums.Messages.Groups).SELECT_TERRITORIAL_SUBDIVISION}"></option>
<option th:each="territorialSubdivision : ${territorialSubdivisionsList}" th:value="${territorialSubdivision.id}" th:text="${territorialSubdivision.name}"></option>
</select>
<input type="submit" class="md-btn" th:value="${T(md.svpm.enums.Messages.Buttons).ADD}">
</form>
Так что в этом случае при ошибке формы вообще нет сообщений ( ТОЛЬКО ЕСЛИ Я УДАЛЯЮ RedirectView
с add
метод, но в этом случае у меня нет остальной информации о загрузке страницы, это не хорошо).
Что я делаю неправильно в моем случае? кто может привести меня к правильному решению?