Здравствуйте.Как перенаправить с 1 контроллера на другой если нужно в 1 контроллере вставить атрибут на страницу и потом перенаправить?

Вот мой код он просто перенаправляет но не выдает ошибку .Мне нужно что бы после перенаправления в случии ошибки валидации он выводил ошибку на страницу.Подскажите пожалуйста буду очень благодарен.
@RequestMapping(value = "/user/addComment", method = RequestMethod.POST)
    public String addComment(HttpServletRequest req,@ModelAttribute("Comment")@Valid Comment comment, BindingResult bindingResult) throws IOException {
        if (bindingResult.hasErrors()){
            return "redirect:/user/detailedNews";
        }
        Long idNews= Long.parseLong(req.getParameter("idNews"));
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        AppUserPrincipal user =(AppUserPrincipal)auth.getPrincipal();
        commentService.saveComment(idNews,user.getUser(),comment);
        return "redirect:/user/detailedNews";
    }
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
При ошибках не делают перенаправления, при ошибке надо вернуть имя шаблона:
if (bindingResult.hasErrors()) {
    return "detailed_news_template";
}

Если же всё-таки надо передать данные при перенаправлении, то нужно использовать RedirectAttributes:
@RequestMapping(value = "/user/addComment", method = RequestMethod.POST)
public String addComment(HttpServletRequest req, @ModelAttribute("Comment") @Valid Comment comment, BindingResult bindingResult, RedirectAttributes redirectAttributes) throws IOException {
    if (bindingResult.hasErrors()) {
        redirectAttributes.addFlashAttribute("errors", bindingResult.getAllErrors());
        return "redirect:/user/detailedNews";
    }
    ...
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы