Делаю вылидацию!
Без //return "/main"; в POST методе не получаеться вывести ошибку под input!
Во freemarker работает!
При использовании thymeleaf нужно делать return "/main" но тогда не отображаться то что возвращает GET
THYMELEAF<div th:class="${message.text} ? 'collapse show' : 'collapse' " id="collapseExample">
<div class="form-group mt-3">
<form th:action="@{/main}" method="post" enctype="multipart/form-data" th:object="${message}" >
<div class="form-group">
<input type="text" name="tag" placeholder="tag" class="form-control">
</div>
<div class="form-group">
<input type="text" name="text" placeholder="please add message"
th:class="${message.text} ? 'form-control is-invalid' : 'form-control ' "
th:field="*{text}"
id="myrequired"
>
<!-- <span class="invalid-feedback" th:if="${#fields.hasErrors('text')}" th:errors="*{text}"></span>-->
<span th:text="${textError}"></span>
</div>
@GetMapping("/main")
public String main(
Message message,
@RequestParam(required = false, defaultValue = "") String filter,
Model model) {
Iterable<Message> messages = messagesRepo.findAll();
if (filter != null && !filter.isEmpty()) {
messages = messagesRepo.findByTag(filter);
} else {
messages = messagesRepo.findAll();
}
model.addAttribute("messages", messages);
model.addAttribute( "message", message);
model.addAttribute("filter", filter);
return "main";
}
@PostMapping("/main")
public String addMessage(
@AuthenticationPrincipal User user,
@Valid Message message,
BindingResult bindingResult,
Model model,
@RequestParam("file") MultipartFile file) throws IOException {
message.setAuthor(user);
if (bindingResult.hasErrors()) {
Map<String, String> errorsMap = ControllerUtil.getErrors(bindingResult);
model.addAttribute( "message", message);
model.mergeAttributes(errorsMap); //todo mergeAttributes не работает Validation из-за mergeAttributes
//return "/main";
} else {
..........................................
return "redirect:/main";