SpringMVC整合jasperreport做報(bào)表
1,在springMVC環(huán)境搭建的基礎(chǔ)上,配置視圖解析器
報(bào)表的打印在這里是使用的ResourceBundleViewResolver視圖解析器,需要注意的是,如果使用了多個(gè)視圖解析器,那么,要使用order來確認(rèn)各個(gè)視圖解析器的順序,要不然不會逐個(gè)解析器的執(zhí)行,一般把將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報(bào)表打印視圖處理 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="order" value="0"></property>
<property name="basename" value="views"></property>
</bean>
<!-- 返回JSON格式的數(shù)據(jù)視圖解析 @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里的數(shù)據(jù)變成JSON -->
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
</bean>
二,在src目錄下建立一個(gè)views.properties
#-------申通詳情單打印
STO.(class)=org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView //固定,每個(gè)class都使用這個(gè)
STO.url=/WEB-INF/printPDF/express_cn/STO.jasper //這里指定報(bào)表的位置
三,將jasper文件拷貝到項(xiàng)目目錄下(自定義位置)
四,控制器
@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
}
}