Cómo configurar ResourceBundleViewResolver en Spring Framework 2.0
-
01-07-2019 - |
Pregunta
Dondequiera que miro siempre aparece la misma explicación.
Configure la resolución de vistas.
<bean id="viewMappings"
class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="views" />
</bean>
Y luego coloque un archivo en el classpath llamado view.properties con algunos pares clave-valor (no importe los nombres).
logout.class=org.springframework.web.servlet.view.JstlView
logout.url=WEB-INF/jsp/logout.jsp
Que hace logout.class
y logout.url
¿significar?
Cómo ResourceBundleViewResolver
utiliza los pares clave-valor en el archivo?
Mi objetivo es que cuando alguien ingrese al URI myserver/myapp/logout.htm
el archivo logout.jsp
se sirve.
Solución
ResourceBundleViewResolver usa la clave/vals en views.properties para crear view beans (en realidad creados en el contexto de una aplicación interna).El nombre del bean de vista en su ejemplo será "cerrar sesión" y será un bean de tipo JstlView.JstlView tiene un atributo llamado URL que se establecerá en "WEB-INF/jsp/logout.jsp".Puede configurar cualquier atributo en la clase de vista de manera similar.
Lo que parece que te falta es tu capa de controlador/manejador.Si desea que /myapp/logout.htm sirva logout.jsp, debe asignar un controlador a /myapp/logout.htm y ese controlador debe devolver el nombre de vista "logout".Luego se consultará ResourceBundleViewResolver para buscar un bean con ese nombre y devolverá su instancia de JstlView.
Otros consejos
Para responder tu pregunta logout
es el nombre de la vista obtenido del objeto ModelAndView devuelto por el controlador.Si tiene problemas, es posible que necesite la siguiente configuración adicional.
Necesita agregar un mapeo de servlet para *.htm
en tus web.xml
:
<web-app> <servlet> <servlet-name>htm</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <oad-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>htm</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> </web-app>
Y si desea mapear directamente al *.jsp
sin crear un controlador personalizado, entonces necesita agregar el siguiente bean a su contexto Spring:
<bean id="urlFilenameController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />