zoukankan      html  css  js  c++  java
  • 自定义视图和自定义视图解析器

    有的时候 SpringMVC 框架提供的视图解析器不能满足我们的需求,这时候我们可以来自定义视图以及视图解析器来完成定制的功能。

    主要分为以下三步:

    • 编写自定义视图实现类
    • 编写视图解析器
    • 在配置文件中将自定义的视图解析器注入ioc容器中

    1、编写自定义视图实现类:

    import java.util.Map;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.View;
    
    // 实现 View 接口才能让框架知道这是一个视图
    public class MyView implements View {
    
    	@Override
    	public String getContentType() {
    		return "text/html";
    	}
    
    	@Override
    	public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response)
    			throws Exception {
    		// 编写渲染视图页面的业务逻辑
    		// 可以在这里取得 model 中保存的数据
                    // 可以使用 request 和 response 进行请求和响应
    	}
    
    }
    

    2、编写视图解析器:

    import java.util.Locale;
    
    import org.springframework.core.Ordered;
    import org.springframework.web.servlet.View;
    import org.springframework.web.servlet.ViewResolver;
    
    // 实现 ViewResolver 接口来让框架知道这是一个视图解析器,实现 Ordered 接口来进行排序
    public class MyViewResolver implements ViewResolver, Ordered {
    
            // 视图解析器的遍历顺序
    	private Integer order;
    
    	@Override
    	public int getOrder() {
    		return order;
    	}
    
            // 设置视图解析器的遍历顺序
    	public void setOrder(Integer order) {
    		this.order = order;
    	}
    
    	@Override
    	public View resolveViewName(String viewName, Locale locale) throws Exception {
    		
    		// 进行视图解析器的业务逻辑,返回视图对象则进行渲染,若返回 null 则继续遍历下一个视图解析器
    		if (viewName.startsWith("myView:")) {
    			return new MyView();
    		}
    		
    		return null;
    	}
    
    }
    

    3、在配置文件中将自定义的视图解析器注入ioc容器中:

    	<bean class="com.pudding.view.MyViewResolver">
                    // order的值越小优先级越高,InternalResourceViewResolver 的 order 值为 Integer 的最大值。
    		<property name="order" value="1"></property>
    	</bean>
    
  • 相关阅读:
    actionbar
    记:使用Xenocode加壳混淆后,无法“自杀覆盖”的自动更新
    用c# 实现设计器 DesignSurface
    将C#程序嵌入资源中(C# 调用嵌入资源的EXE文件方法)
    【转】给自己的软件制作注册码
    免费的Web Service网址
    MS SQL 2005/8 无法远程连接的解决方案【留】
    IIS 部署 ASP.NET 的一个注意点
    成语验证
    C#利用msscript.ocx控件执行JS脚本
  • 原文地址:https://www.cnblogs.com/lemon-coke-pudding/p/12824003.html
Copyright © 2011-2022 走看看