1、ViewResolver
UrlBasedViewResolver 这个东西是根据url 进行路由的。网上搜了

1、order 排序,同名出现各种问题

2、XmlViewResolver,BeanNameViewResolver,ResourceBundleViewResolver  这个

根据配置文件去找不同的view 乱码。。。莫名,而且配置的起来比较麻烦,好处么,就是一个配置文件基本搞定所有页面位置

乱码据说WebApplicationContext 中可以设置某弄过

3、自己写个ViewResolver ,这个比较推荐,也比较靠谱,网上找了2个,觉得还是集成AbstractCachingViewResolver

比较靠谱,下面是拷贝来的

package com.cnynld.web.tpl;

import java.util.Iterator;
import java.util.Locale;
import java.util.Map;

import org.springframework.core.Ordered;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.view.AbstractCachingViewResolver;


/**
 * @author loswing
 * spring mvc 多view 兼容的 通过后缀来过滤
 * FIXME 也可以通过 集成  ViewResolver 不过 AbstractCachingViewResolver是所有resolver的根更靠谱点
 */
public class SpringMvcExtendViewResolver extends AbstractCachingViewResolver  implements Ordered{ 
   
    private int order = Integer.MIN_VALUE;  
    
    public int getOrder() {  
        return order;  
    }  
  
    public void setOrder(int order) {  
        this.order = order;  
    }  
      
    private Map<String, ViewResolver> resolvers;  
      
    public void setResolvers(Map<String, ViewResolver> resolvers) {  
        this.resolvers = resolvers;  
    }  
    private String getViewResolverKey(String fileExtension){  
        Iterator<String> keyIt = resolvers.keySet().iterator();  
        while (keyIt.hasNext()) {  
            String viewResolverKey = (String) keyIt.next();  
            String[] arr = viewResolverKey.split(",");  
            for (String subKey : arr) {  
                if(subKey.equals(fileExtension)) return viewResolverKey;  
            }  
        }  
        return null;  
    }  
      
    @Override  
    protected View loadView(String viewName, Locale locale) throws Exception {  
        String fileExtension = StringUtils.getFilenameExtension(viewName);  
        if (fileExtension == null) {  
            return null;  
        }  
        String viewResolverKey = getViewResolverKey(fileExtension);  
        ViewResolver resolver = resolvers.get(viewResolverKey);  
          
        return resolver == null ? null : resolver.resolveViewName(viewName,locale);  
  
    }   

}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-01
  • 2022-12-23
  • 2022-12-23
  • 2021-10-08
  • 2022-12-23
猜你喜欢
  • 2021-11-16
  • 2021-10-13
  • 2022-12-23
  • 2021-07-25
  • 2021-06-08
相关资源
相似解决方案