自定义MultipleViewResolver

原创 2012年03月24日 22:32:07

1.MultipleViewResolver.java

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

import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;

public class MultipleViewResolver implements ViewResolver {
 
 private Map<String, ViewResolver> resolvers;

 public void setResolvers(Map<String, ViewResolver> resolvers) {
  this.resolvers = resolvers;
 }

 public View resolveViewName(String viewName, Locale locale)
   throws Exception {
  int index = viewName.indexOf('.');//first '.'
  ViewResolver resolver = null;
  
  if (index > -1) {
   int p = viewName.indexOf("?");//first '?'
   p = p == -1 ? viewName.length() : p;
   if (resolvers.containsKey(viewName.substring(index + 1, p))) {
    resolver = resolvers.get(viewName.substring(index+1, p));
   } else {
    resolver = resolvers.get(viewName.substring(index+1));
   }
  } else {
   resolver = resolvers.get(viewName);
  }

  if (resolver != null) {
   return resolver.resolveViewName(viewName, locale);
  }
  
  return null;
 }

 

2.jsonView.java

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.kframe.util.JSONResponseUtil;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.view.AbstractView;

public class JsonView extends AbstractView implements Ordered {

 private int order;

 public JsonView() {
  setContentType("application/json;charset=UTF-8");
 }

 @SuppressWarnings("unchecked")
 @Override
 protected void renderMergedOutputModel(Map map, HttpServletRequest request,
   HttpServletResponse response) throws Exception {
  Object o = map.get(JsonModelAndView.EXCLUDE_PROPERTY);
  if (o != null) {
   JSONResponseUtil.print(response, map .get(JsonModelAndView.MODEL_KEY), (String[]) o);
  } else {
   JSONResponseUtil.print(response, map .get(JsonModelAndView.MODEL_KEY));
  }
 }

 public void setOrder(int order) {
  this.order = order;
 }

 public int getOrder() {
  return order;
 }

}

 

3.JsonModelAndView.java

import org.springframework.web.servlet.ModelAndView;

public class JsonModelAndView extends ModelAndView {

 public static final String MODEL_KEY = "MODEL_KEY";
 
 public static final String EXCLUDE_PROPERTY = "EXCLUDE_PROPERTY";

 private static final String VIEW_NAME = "json";


 public JsonModelAndView() {
  setViewName(VIEW_NAME);
 }

 public JsonModelAndView(Object object) {
  addObject(MODEL_KEY, object);
  setViewName(VIEW_NAME);
 }
 
 public JsonModelAndView(Object object, String[] excludeProperty) {
  addObject(MODEL_KEY, object);
  addObject(EXCLUDE_PROPERTY, excludeProperty);
  setViewName(VIEW_NAME);
 }

 public void setModel(Object object) {
  addObject(MODEL_KEY, object);
 }

 public void setExcludeProperty(String[] excludeProperty) {
  addObject(EXCLUDE_PROPERTY, excludeProperty);
 }
}

 

4.

相关文章推荐

WinForm+SQL多表联合自定义查询

  • 2017年12月13日 09:39
  • 99KB
  • 下载

JavaScript自定义聚散显示数量

  • 2017年12月07日 11:31
  • 439KB
  • 下载

Android开发_libgdx游戏引擎教程外篇 优美的自定义进度条 (八)

这次的外一篇需要大家先掌握一些简单的libgdx的知识看起来才更加容易些: android游戏开发框架libgdx的使用(四)--舞台和演员 http://www.apkbus.com/andro...

Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日

目的: 需要对一些事物的操作进行日志记录,如果在service内进行记录,大量的代码重复,并且维护比较麻烦。所以采用AOP的方式对service进行拦截。使用自定义注解的目的则是判断是否需要记录...

shell脚本导出自定义的表列数据

  • 2017年12月04日 09:33
  • 186B
  • 下载

自定义View的详细流程代码

  • 2017年11月20日 14:16
  • 8.98MB
  • 下载

CYQ.Data 轻量数据层之路 自定义MDataTable绑定续章(七)

本章起,将续章讲解整框架当初的设计思路: 本章既为续章,说明我以前写过,是的,以前我写过内部整个MDataTable的构造,不过,当初匆匆写完后, 最后一步的实现MDataTable绑定GridV...
  • cyq1162
  • cyq1162
  • 2016年11月23日 12:07
  • 195

qt5音乐播放器自定义解码

  • 2017年11月09日 15:10
  • 1.29MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义MultipleViewResolver
举报原因:
原因补充:

(最多只允许输入30个字)