Я пытался и пытался, но не могу понять, что здесь происходит.
- У меня есть простой контроллер, аннотированный с помощью @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();
}
Вы видите что-нибудь, что я мог пропустить? Я потратил почти день, пытаясь понять это, и просто не могу. Любая помощь приветствуется.
Обновление: я понял, в чем проблема. Ответ размещен ниже.