@SessionAttributes без @ModelAttribute (необходимо ли @ModelAttribute?) - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть объект (цель), состояние которого я хочу перенести из GET в контроллер POST без перечисления каждого столбца в шаблоне Thymeleaf.

Итак, когда я отправляю объект Goal с 12 полями, а пользователь добавляет только 3, я не потеряю другие.

Во многих статьях указывалось, что я должен сделать следующее:

  1. Используйте @SessionAttributes для класса глобально
  2. Добавьте @ModelAttribute в качестве входного параметра в POST-контроллере.

Удивительно, но у меня это работает без добавления @ModelAttribute. Просто с @SessionAttributes в главе класса.

Вопрос: Нужно ли @ModelAttribute при использовании @SessionAttributes и почему? И если да, то почему он работает как брелок в моем контроллере с просто @SessionAttributes и без упоминания Goal в качестве @ModelAttribute параметра моего метода POST?

Код указан ниже:

@Controller
@SessionAttributes("goal")
public class GoalController {

    @PostMapping("/goal")
    public String save (Goal goal,  RedirectAttributes redirect, SessionStatus sessionStatus) {
        goalService.save(goal);
        sessionStatus.isComplete();
        return "redirect:" + WEB_URL;
    }

    @GetMapping(goal/edit/{id}")
    public String edit (@PathVariable Long id, Model model) {
        Goal goal = goalService.getById(id);
        model.addAttribute("goal", goal);
        return WEB_FORM_URL;


...