ResourceBundleViewResolver类详解 - ViewResolver系列六

ResourceBundleViewResolver和XmlViewResolver一样,也是继承自AbstractCachingViewResolver,但是它缓存的不是视图,这个会在后面有说到。和XmlViewResolver一样它也需要有一个配置文件来定义逻辑视图名称和真正的View对象的对应关系,不同的是ResourceBundleViewResolver的配置文件是一个属性文件,而且必须是放在classpath路径下面的,默认情况下这个配置文件是在classpath根目录下的views.properties文件,如果不使用默认值的话,则可以通过属性baseName或baseNames来指定。

配置

ResourceBundleViewResolver是根据proterties文件来找对应的视图来解析”逻辑视图“的,该properties文件默认是放在classpath路径下的views.properties文件,当然可以通过basename属性更改。

<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
    <property name="basename" value="spring-views"></property>
    <property name="order" value="1"></property>
</bean>

这时ResourceBundleViewResolver会从classpath路径下的spring-views.properties文件中寻找物理视图。

spring-views.properties

login.(class)=org.springframework.web.servlet.view.JstView
login.url=/WEB-INF/jsp/login.jsp

properties文件里面存放的是key-value数据,从文件中可以看出逻辑视图与视图Bean也是以这种方式绑定的。

1、login表示处理器(controller)返回的逻辑视图
2、login.(class)表示视图Bean对应的视图类
3、login.url表示物理视图

注意要将这个“spring-views.properties”文件放到项目的class路径下。

Controller控制器

@RequestMapping(value="/page",method=RequestMethod.GET)
public String getPage(Model model){
  return "login";
}

当处理器(controller)返回”login“时,会在前台显示/WEB-INF/jsp/login.jsp的页面内容。

总结

当控制器返回一个名为“login”的视图时,ResourceBundleViewResolver将在“spring-views.properties”文件中查找以“login”起始的键,并返回相对应的视图URL“/WEB-INF/pages/login.jsp”给DispatcherServlet。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。