现在的位置: 首页 > 综合 > 正文

SpringMVC整合jasperreport做报表

2018年04月30日 ⁄ 综合 ⁄ 共 2015字 ⁄ 字号 评论关闭

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

}

}

 

抱歉!评论已关闭.