如何在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" />