¿Cómo asigna Spring 2.5 los datos de la solicitud entrante al comando ModelAttribute?
-
03-07-2019 - |
Pregunta
He usado Spring 2.0 y ahora estoy usando Spring 2.5 Naturalmente, Spring 2.5 hizo la vida muy fácil en lo que respecta a los Controladores Web. La pregunta sigue viniendo en mi mente que en 2.0 tuvimos que establecer la clase de comando y, en consecuencia, el AbstractFormController utilizado para rellenar ese objeto de comando para nosotros. En la primavera 2.5 no lo hacemos así que, ¿cómo se llega a saber qué clase usar? ¿Depende del tipo de parámetro que hemos anotado en @ModelAttribute (" comando ") a?
Si es así, hágame saber cualquier " Utils " clase que proporciona el mecanismo exacto donde puedo pasar HttpRequest y el nombre de la clase (o el objeto de la Clase) y eso me devolvería el objeto poblado.
Espero que tengas mi pregunta.
Gracias de antemano.
Solución
El enlace de las anotaciones de Web MVC finalmente depende de un
org.springframework.beans.AbstractPropertyAccessor
que tiene dos implementaciones concretas:
org.springframework.beans.BeanWrapperImpl org.springframework.beans.DirectFieldAccessor
Ambos aceptan un objeto Java, que será el objetivo para establecer las propiedades.
El primero, BeanWrapperImpl usa los métodos setter / getter de un objeto java, mientras que el otro establece los campos directamente. Ambos verifican que los métodos / campos sean públicos / accesibles y, de lo contrario, use setAccessible (true) de reflexión para asegurarse de que se pueda configurar.
Desde el MVC web, se crea una instancia de AbstractPropertyAccessor y el mapa de parámetros de una HttpRequest se pasa a AbstractPropertyAccessor # setPropertyValues.
Después de la llamada, el objeto java se rellena con lo que esté en el mapa