Я пытался и пытался, но не могу понять, что здесь происходит.
- У меня есть простой контроллер, аннотированный с помощью @ Controller
- У меня также есть аннотация для @ SessionAttributes
- Я обрабатываю запрос GET и помещаю объект в модель.
- Когда я возвращаю сообщение POST из формы, я получаю только то, что заполнил пользователь. Я не верну полный объект.
Я новичок в SessionAttributes, но я думал, что это сохранило весь объект, и когда объект был прочитан обратно в метод с использованием @ModelAttribute, он будет объединен с объектом (то есть с объектом, который изменилась в форме). Однако я не вижу такого поведения.
Любая помощь будет высоко ценится.
Вот соответствующие штуки из кода:
@Controller
@RequestMapping("/user")
@SessionAttributes("user")
public class UserController
{
// ...
@RequestMapping(value = "/{login}", method = RequestMethod.GET)
public String profile(Model model, @PathVariable("login") String login)
{
// ...
model.addAttribute("user", user);
// ...
}
@RequestMapping(value="/{login}", method = RequestMethod.POST)
public String saveProfile(@ModelAttribute("user") @Valid User user, BindingResult result, SessionStatus status)
{
if (result.hasErrors())
{
return "user/index";
}
// ...
status.setComplete();
return "redirect:/user/"+user.getLogin();
}
Вы видите что-нибудь, что я, возможно, пропустил? Я провел почти день, пытаясь понять это, и просто не могу. Любая помощь приветствуется.
Обновление: я выяснил, в чем проблема. Ответ опубликован ниже.