Как Spring 2.5 сопоставляет данные входящего запроса с командой ModelAttribute?

StackOverflow https://stackoverflow.com/questions/418178

  •  03-07-2019
  •  | 
  •  

Вопрос

Я использовал Spring 2.0, а теперь использую Spring 2.5. Естественно, Spring 2.5 очень облегчил жизнь веб-контроллерам.Мне все время приходит в голову вопрос, что в версии 2.0 нам нужно было установить класс команды и, соответственно, AbstractFormController, используемый для заполнения этого командного объекта для нас.В Spring 2.5 мы этого не делаем, так как же узнать, какой класс использовать?Зависит ли это от типа параметра, к которому мы добавили аннотацию @ModelAttribute("command")?

Если да, то сообщите мне любой класс «Utils», который обеспечивает точный механизм, с помощью которого я могу передать HttpRequest и имя класса (или объект класса), и который вернет мне заполненный объект!

Надеюсь, вы поняли мой вопрос.

Заранее спасибо.

Это было полезно?

Решение

Привязка аннотаций Web MVC в конечном итоге зависит от

org.springframework.beans.AbstractPropertyAccessor

который имеет две конкретные реализации:

org.springframework.beans.beanwrapperimpl org.springframework.beans.directfieldaccorsor

Оба принимают объект Java, который будет целью установки свойств.

Первый, BeanWrapperImpl, использует методы установки/получения объекта Java, а другой устанавливает поля напрямую.Оба проверяют, что методы/поля являются общедоступными/доступными, и в противном случае используют setAccessible(true) отражения, чтобы гарантировать, что его можно установить.

Из Web MVC создается экземпляр AbstractPropertyAccessor, а карта параметров HttpRequest передается в AbstractPropertyAccessor#setPropertyValues.

После вызова объект Java заполняется всем, что есть на карте.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top