如何在Spring Framework 2.0中配置ResourceBundleViewResolver

时间:2020-03-06 14:27:23  来源:igfitidea点击:

在我看来,到处都是弹出相同的解释。
配置视图解析器。

<bean id="viewMappings"
      class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
    <property name="basename" value="views" />
</bean>

然后将一个带有一些键-值对的文件放在名为view.properties的类路径中(不要管名称)。

logout.class=org.springframework.web.servlet.view.JstlView
logout.url=WEB-INF/jsp/logout.jsp

logout.class和logout.url是什么意思?
ResourceBundleViewResolver如何使用文件中的键值对?
我的目标是,当有人输入URImyserver / myapp / logout.htm时,将输出logout.jsp文件。

解决方案

ResourceBundleViewResolver使用views.properties中的键/值创建视图bean(实际上是在内部应用程序上下文中创建)。在示例中,视图Bean的名称将为"注销",并且将为JstlView类型的Bean。 JstlView有一个称为URL的属性,该属性将设置为" WEB-INF / jsp / logout.jsp"。我们可以通过类似的方式在视图类上设置任何属性。

我们似乎缺少的是控制器/处理程序层。如果要/myapp/logout.htm提供logout.jsp,则必须将Controller映射到/myapp/logout.htm,并且Controller需要返回视图名称" logout"。然后将向ResourceBundleViewResolver查询该名称的bean,并返回JstlView实例。

要回答问题,"注销"是从控制器返回的ModelAndView对象获得的视图名称。如果遇到问题,则许多人需要以下添加配置。

我们需要在web.xml中添加* .htm的servlet映射:

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

而且,如果我们想直接映射到* .jsp而不创建自定义控制器,则需要在Spring上下文中添加以下bean:

<bean id="urlFilenameController"
        class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />