spring3mvc自定义多视图解析器

使用视图名后缀来判断选择相应的视图解析器
自定义一个视图解析器,MultiViewResover.java

01 package com.it.app.web;
02 
03 import java.util.Locale;
04 import java.util.Map;
05 
06 import org.springframework.web.servlet.View;
07 import org.springframework.web.servlet.ViewResolver;
08 
09 public class MultiViewResover implementsViewResolver {
10   
11     privateMap<String, ViewResolver> resolvers;
12   
13     @Override
14     publicView resolveViewName(String viewName, Locale locale)
15             throwsException {
16         intn = viewName.lastIndexOf("_"); // 获取
17                                             // viewName(modelAndView中的名字)看其有没有下划线
18         if(n == (-1))
19             returnnull// 没有则直接返回空
20         // 有的话截取下划线后面的字符串 这里一般是jsp,ftl,vm与配置文件中的<entry key="ftl">的key匹配
21         String suffix = viewName.substring(n + 1);
22         // 根据下划线后面的字符串去获取托管的视图解析类对象
23         ViewResolver resolver = resolvers.get(suffix);
24   
25         // 取下划线前面的部分 那时真正的资源名.比如我们要使用hello.jsp 那viewName就应该是hello_jsp
26         viewName = viewName.substring(0, n);
27         if(resolver != null)
28             returnresolver.resolveViewName(viewName, locale);
29         returnnull;
30     }
31   
32     publicMap<String, ViewResolver> getResolvers() {
33         returnresolvers;
34     }
35   
36     public voidsetResolvers(Map<String, ViewResolver> resolvers) {
37         this.resolvers = resolvers;
38     }
39}

 

配置spring的mvc文件 

01<!-- 自定义多视图解析器 -->
02     <bean id="viewResolver" class="com.jw.app.web.MultiViewResover">
03         <property name="resolvers">
04             <map>
05                 <entry key="jsp">
06                     <bean
07                         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
08                         <property name="prefix" value="/WEB-INF/views/jsp/" />
09                         <property name="suffix" value=".jsp" />
10                     </bean>
11                 </entry>
12                 <!-- 此处其他视图解析器 -->
13             </map>
14         </property>
15     </bean>

注意,如果已经配置了一个默认的视图解析器org.springframework.web.servlet.view.InternalResourceViewResolver,那么该自定义视图解析器必须放在默认视图解析器之前。
修改首页控制器返回的视图名称,加上"_jsp"后缀

1 @RequestMapping(value="/indexjsp")
2     public String index_jsp(){
3         return "index_jsp";
4     }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值