如何在Spring Framework 2.0中配置ResourceBundleViewResolver

时间:2008-09-19 19:03:13

标签: java spring frameworks

到处都是我看起来总是一样的解释弹出窗口 配置视图解析器。

<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.classlogout.url的含义是什么? ResourceBundleViewResolver如何使用文件中的键值对?
我的目标是,当有人输入URI myserver/myapp/logout.htm时,文件logout.jsp就会被提供。

2 个答案:

答案 0 :(得分:5)

ResourceBundleViewResolver使用views.properties中的键/ val来创建视图bean(实际上是在内部应用程序上下文中创建的)。示例中视图bean的名称将为“logout”,它将是JstlView类型的bean。 JstlView有一个名为URL的属性,它将被设置为“WEB-INF / jsp / logout.jsp”。您可以以类似的方式在视图类上设置任何属性。

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

答案 1 :(得分:0)

回答您的问题logout是从控制器返回的ModelAndView对象获取的视图名称。如果您遇到问题,许多人需要以下额外配置。

您需要在*.htm中添加web.xml的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而不创建自定义控制器,那么您需要将以下bean添加到Spring上下文中:

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