@Nulltiton

Как вернуть страницу с id в Spring?

У меня есть метод, который добавляет последовательность значений в БД. Если расстояние между позициями больше 1, то возвращаю кастовую ошибку (SequenceGapException). Делается это все на странице конкретного пользователя, то есть в строке есть id. Если произошла ошибка, то необходимо перейти на эту страницу с id и вывести в теге div информацию.
@PostMapping("/edit-all-sequence/save/{id}")
    public String updateAllRouteStopsSequence(@PathVariable("id") Long id, @ModelAttribute("routeStops") RouteStopsDTO routeStopsDTO, Model model) {
        try {
            model.addAttribute("routeStops", routeStopService.editAllSequence(routeStopsDTO));
        }
        catch (SequenceGapException ex)
        {
            model.addAttribute("sequenceGapError", true);
            return "/routes/edit-all-sequence/{id}/";
        }
        return "redirect:/routes/edit-all-sequence/{id}/";
    }

<div class="mt-3" th:if="${sequenceGapError?.equals(true)}">
    <div class="alert alert-danger" role="alert">Последовательность остановок неверна.
        Значения последовательности не могут превышать единицу!</div>
</div>

В пост-методе контроллера "/routes/edit-all-sequence/{id}/" выделяет, как не соответствующую страницу MVC. Подскажите, как вернуть обновленную страницу пользователя с id? Пробовал через редирект, но возвращает обычную страницу. Думаю, что дело в том, что он подгружает уже созданную страницу, на которой не показана ошибка. Тогда мне необходимо выводить новую страницу с ошибкой, но сделать этого не получается.
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 1
@My1Name
Как вернуть страницу с id в Spring?

В первую очередь нужно понять, что страница с id - это ссылка с параметрами. Ссылка - указывает на страницу, а параметры - на объект.

В пост-методе контроллера "/routes/edit-all-sequence/{id}/" выделяет, как не соответствующую страницу MVC.

Страница у вас одна. Меняются только значения связанные с объектом.

Если вы используете redirect, то вместо Model используйте RedirectAttributes или ModelAndView. Тогда ваш код будет выглядеть следующим образом:model.addFlashAttribute("sequenceGapError", true); и будет автоматически распространяться на «выходной» FlashMap текущего запроса.

Прежде чем делать перенаправление, попробуйте вернуть стандартную страницу:
return "/routes/edit-all-sequence/"; По идее должна вернуться страница с параметрами {id} текущего запроса и, никакой redirect вам не нужен.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы