您的位置:首页 > 编程语言 > Java开发

spring设置多个ViewResolver

2016-03-03 10:02 387 查看
ViewResolver用来解析视图文件,如常用的jsp类型的文件。

<bean id ="jspViewResolver" class= "org.springframework.web.servlet.view.InternalResourceViewResolver" >
<!-- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> -->
<property name ="prefix" value="" />
<property name ="suffix" value="" />
</bean >


spring中可以配置多个视图解析类,用来解析不同类型的文件。

其中各个解析类的调用顺序和属性order有关,order值小的先进性解析,如果解析失败则调用下一个解析类。

以jsp解析类
InternalResourceViewResolver
为例。

所有的解析类要继承
UrlBasedViewResolver
,几个重要的属性:

private Class<?> viewClass;

private String prefix = "";

private String suffix = "";

private int order = Integer.MAX_VALUE;


其中viewClass如果不配置的话,会调用子类的requiredViewClass方法

public void setViewClass(Class<?> viewClass) {
if (viewClass == null || !requiredViewClass().isAssignableFrom(viewClass)) {
throw new IllegalArgumentException(
"Given view class [" + (viewClass != null ? viewClass.getName() : null) +
"] is not of type [" + requiredViewClass().getName() + "]");
}
this.viewClass = viewClass;
}


然后看中
InternalResourceViewResolver
的方法

public InternalResourceViewResolver() {
Class<?> viewClass = requiredViewClass();
if (InternalResourceView.class == viewClass && jstlPresent) {
viewClass = JstlView.class;
}
setViewClass(viewClass);
}

/**
* This resolver requires {@link InternalResourceView}.
*/
@Override
protected Class<?> requiredViewClass() {
return InternalResourceView.class;// 默认用该类去解析文件
}


解析文件的大概流程就是这样,改天试试自己写一个解析文件的实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: