Я использую 2.5 и делаю все с помощью аннотаций.
У меня есть простая форма, которая позволяет пользователю редактировать объект. Контроллер позади него создает объект и добавляет его в модель в GET и обрабатывает изменения в POST (submit). Работает нормально, но я не понимаю почему. Объект никогда не добавляется в сеанс явным образом, и «идентификатор» объекта не передается в метод submit. Как метод submit контроллера узнает значение «id» объекта?
Причина, по которой возник этот вопрос, заключается в том, что у меня есть другая форма / контроллер, которая почти идентична приведенной выше, но не работает, если я не добавлю объект в @SessionAttributes. Разница в том, что объект, с которым работает данный контроллер, имеет ссылку на другой объект, который загружается с отложенной загрузкой (я использую Hibernate за кулисами). Когда я отправляю форму, не помещая родительский объект в SessionAttributes, я получаю исключение DataIntegrityViolationException, поскольку я никогда не загружаю указанный объект.
Когда я добавляю родительский объект в @SessionAttributes, проблема волшебным образом исчезает. Я говорю волшебно, потому что, хотя я помещаю родительский объект в сеанс на GET, я все равно никогда явно не загружаю ссылочный объект, поэтому он должен быть нулевым (или пустой прокси-сервер или что-то еще).
Что в мире происходит? Мне нужна помощь!