SpringMVC整合jasperreport做报表 1,在springMVC环境搭建的基础上,配置视图解析器 报表的打印在这里是使用的ResourceBundleViewResolver视图解析器,需要注意的是,如果使用了多个视图解析器,那么,要使用order来确认各个视图解析器的顺序,要不然不会逐个解析器的执行,一般把将InternalResourceViewResolver放最后,也就是order的值最大 <!-- jsp页面视图处理 --> <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="order" value="2"></property> <property name="prefix" value="/WEB-INF/pages/"></property> <property name="suffix" value=".jsp"></property> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> </bean> <!-- PDF报表打印视图处理 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver"> <property name="order" value="0"></property> <property name="basename" value="views"></property> </bean> <!-- 返回JSON格式的数据视图解析 @author 谢德文 --> <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="order" value="1"></property> <property name="mediaTypes"> <map> <!-- 告诉视图解析器,返回的类型为json格式 --> <entry key="json" value="application/json" /> </map> </property> <property name="defaultViews"> <list> <!-- ModelAndView里的数据变成JSON --> <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> </list> </property> </bean>
二,在src目录下建立一个views.properties #-------申通详情单打印 STO.(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView //固定,每个class都使用这个 STO.url=/WEB-INF/printPDF/express_cn/STO.jasper //这里指定报表的位置
三,将jasper文件拷贝到项目目录下(自定义位置)
四,控制器 @RequestMapping("/previewPDF/*") @Controller public class PrintPDF { @Resource private OrderDao orderDao; @RequestMapping("printExpress.do") public ModelAndView printExpress(ModelMap model){ TbShgwOrder orderView = orderDao.findById(TbShgwOrder.class, Long.parseLong(221+"")); //如果直接传对象bean不行,需要使用list传值 List<TbShgwOrder> orders = new ArrayList<TbShgwOrder>(); orders.add(orderView); model.put("orderViews", orders); //将list放到model中 return new ModelAndView("STO",model); //这里的“STO”就是views.properties里面的key } }
|
|