自定义视图
- 自定义视图(需要加入SpringMVC,那么,一定需要实现框架的接口)
- 若希望使用 Excel 展示数据列表,仅需要扩展 SpringMVC 提供的 AbstractExcelView 或 AbstractJExcelView 即可。
- 实现 buildExcelDocument() 方法,在方法中使用模型数据对象构建 Excel 文档就可以了。
- AbstractExcelView 基于 POI API,而 AbstractJExcelView 是基于 JExcelAPI 的。
- 视图对象需要配置 IOC 容器中的一个 Bean,使用 BeanNameViewResolver 作为视图解析器即可
- 若希望直接在浏览器中直接下载 Excel 文档,则可以设置响应头 Content-Disposition 的值为 attachment;filename=xxx.xls
1 实验代码
- 页面链接
<a href=”springmvc/testView“>testView</a> |
- 控制器方法
@RequestMapping(“/testView“) public String testView(){ System.out.println(“testView…”); return “helloView”; //与视图Bean 对象的id一致 } |
- 自定义视图
package com.atguigu.springmvc.view; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; import org.springframework.web.servlet.View; @Component public class HelloView implements View { @Override public String getContentType() { return “text/html”; } @Override public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception { response.getWriter().println(“HelloView – time = ” + new Date()); } } |
- 声明视图解析器
<!– 配置视图解析器:按照bean的名称查找视图 –> <bean class=”org.springframework.web.servlet.view.BeanNameViewResolver“> <property name=”order” value=”100″></property> </bean> |
5)InternalResourceViewResolver默认的优先级:private int order = Integer.MAX_VALUE;
2 源码参考
public class BeanNameViewResolver extends WebApplicationObjectSupport implements ViewResolver, Ordered { private int order = Integer.MAX_VALUE; // default: same as non-Ordered public void setOrder(int order) { this.order = order; } @Override public int getOrder() { return order; } @Override public View resolveViewName(String viewName, Locale locale) throws BeansException { ApplicationContext context = getApplicationContext(); if (!context.containsBean(viewName)) { //说明视图组件必须增加到Spring的IOC 容器中,所以需要@Component // Allow for ViewResolver chaining. return null; } return context.getBean(viewName, View.class); } } |
想要了解跟多关于java培训课程内容欢迎关注尚硅谷java培训,尚硅谷除了这些技术文章外还有免费的高质量java培训课程视频供广大学员下载学习。