Проверка на перенаправление в Thymeleaf + Spring Boot - PullRequest
0 голосов
/ 24 апреля 2020

Каждый пример в 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 метод, но в этом случае у меня нет остальной информации о загрузке страницы, это не хорошо).

Что я делаю неправильно в моем случае? кто может привести меня к правильному решению?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...