Я посмотрел на этот пример: http://helptodeveloper.blogspot.com/2010/02/jasper-reports-with-pagination.html и проверил демо webapp
, включенное в пакет JasperReports (в частности, 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);
}
Затем я расширил стандарт JasperReportsHtmlView
, предоставляемый Spring, переопределив метод 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 по другой причине ( Изображения, не показанные в html-отчете JasperReports ), но следуя тому же подходу, я решил и эту проблему.
NOTE pt.2: Я новичок в Spring Framework, поэтому, если мой ответ не совсем корректен ... Попытайтесь понять меня! :)