我正在使用 JasperReports 和 Spring MVC 3 生成用于在Web应用程序中显示表数据的HTML报告。
JasperReports是否提供某种分页方法?或者,是否可以使用一些Spring MVC实用程序对生成的报告中的数据进行分页?
答案 0 :(得分:2)
是的, JasperReports 提供了一些分页方法。
您可以设置此导出程序参数:
JRHtmlExporterParameter.BETWEEN_PAGES_HTML
JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS
BETWEEN_PAGES_HTML
exporter参数接受 java.lang.String 以在导出到 HTML 格式。
设置为 Boolean.TRUE 时, IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS
导出程序
参数确保生成的HTML表上的所有空行都已折叠。
如果未设置 PROPERTY_ONE_PAGE_PER_SHEET
,则所有文档页面将打印在一张纸上。分页符在页面之间显示为补充空行。
您可以阅读this guide了解详情,并浏览this example Struts 。
您可以使用IS_IGNORE_PAGINATION
内置报告参数或isIgnorePagination
报告的模板属性。
您可以设置此参数以避免将文档分成多个页面。
您可以使用JasperReports API - JasperDesign.setIgnorePagination(boolean ignorePagination)方法。
附加:
关于SO的相关帖子:Is Jasper Reports the appropriate solution to display reports in a web application?
您可以查看 $JASPERREPORTS_DIR$\demo\samples\nopagebreak
文件夹中的示例报告(与 JasperReports 包一起分发)。
答案 1 :(得分:1)
我看过这个示例:http://helptodeveloper.blogspot.com/2010/02/jasper-reports-with-pagination.html并检查了JasperReports包中包含的webapp
演示(特别是viewer.jsp
)。
我尝试使用Spring MVC实现类似的功能。
在我的控制器类中,我以这种方式修改了请求处理方法:
@RequestMapping("/report")
public ModelAndView showHtmlReport(HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value = "page", required = false) String pageIndex,
ModelMap model) {
// do something...
if (StringUtils.isNotBlank(pageIndex)
&& StringUtils.isNumeric(pageIndex)) {
model.put("page_index", new Integer(pageIndex));
}
// do something else...
return new ModelAndView("htmlReport", model);
}
然后我扩展了Spring提供的标准JasperReportsHtmlView
,覆盖了renderReport
方法:
@Override
protected void renderReport(JasperPrint populatedReport,
Map<String, Object> model, HttpServletResponse response)
throws Exception {
// check something...
if (model.containsKey("page_index")) {
Map<net.sf.jasperreports.engine.JRExporterParameter, Object> expParams =
this.getConvertedExporterParameters();
expParams.put(
net.sf.jasperreports.engine.JRExporterParameter.PAGE_INDEX,
model.get("page_index"));
}
// check something else...
super.renderReport(populatedReport, model, response);
}
注意:我实际上是出于另一个原因(Images not shown in JasperReports' html report)扩展了html-view类,但是按照相同的方法我也解决了这个问题。
注意第2页:我是Spring Framework的新手,所以如果我的答案不完全正确......试着去了解我! :)