2011-11-25 100 views
1

我使用JasperReportsSpring MVC 3生成用于在Web应用程序中显示表数据的HTML报告。JasperReports HTML报告分页

JasperReports提供某种分页方法吗?或者,是否可以使用一些Spring MVC实用程序对生成的报告中的数据进行分页?

回答

2

是的,JasperReports提供了一些分页方法。

您可以设置此参数出口商:

JRHtmlExporterParameter.BETWEEN_PAGES_HTML 
JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS 

BETWEEN_PAGES_HTML出口参数接受java.lang.String中替换默认页面分隔导出为HTML 时格式为

当设置为Boolean.TRUE,所述IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS出口 参数确保对所得到的HTML表中的所有空行被折叠。

PROPERTY_ONE_PAGE_PER_SHEET没有被设置,所有文档页面将被打印出到单个片材。分页符显示为页面之间的补充空行。

你可以阅读this guide了解更多信息并探索this exampleStruts

您可以使用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包)。

+0

谢谢!我正试图将页面放在与您建议的示例非常相似的页面上,并带有PREV和NEXT按钮。 – davioooh

+0

我真的希望JR提供一些综合分页系统(更复杂的东西...) 我会尝试跟随你的指示。非常感谢你。 – davioooh

+0

@DavidC。欢迎,大卫 –

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); 
} 

注意:我实际上扩展了html-view类为另一个reas (Images not shown in JasperReports' html report),但按照同样的方法我也解决了这个问题。

注意pt.2:我是Spring Framework的新手,所以如果我的回答不完全正确......试着理解我! :)