I
I
Igor2019-11-18 22:33:48
Spring
Igor, 2019-11-18 22:33:48

Get attribute with Spring mergeAttributes for Thymeleaf?

I'm doing a trim!
Without //return "/main"; in the POST method, it is not possible to display an error under the input!
It works in freemarker!
When using thymeleaf, you need to do return "/main" but then what GET
THYMELEAF returns is not displayed

<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";

5dd2f30caff16070563271.png
5dd2f314d8064495866050.png

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question