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.

¿Fue útil?

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" />

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top