Я, как и вы, начал с вспомогательных классов Spring для Jasper Reports, но быстро отказался от них как слишком грубых и негибких, что необычно для Spring. Как будто они были добавлены как запоздалая мысль.
Большая проблема, с которой я столкнулся, заключалась в том, что после того, как они были скомпилированы, для добавления новых версий требовался отскок сервера приложений. В моем случае я искал решение, с помощью которого я мог бы поменять их на диске, и они перекомпилировали бы, во многом как обычная работа JSP (если вы не отключите эту функцию, как это делают многие производственные сайты).
В качестве альтернативы я хотел иметь возможность хранить файлы jrxml в базе данных или удаленно запускать отчеты (например, через интерфейс веб-служб JasperServer). Классы Spring просто сделали практически невозможным реализацию таких функций.
Так что я предлагаю вам: сверните свое. По пути есть несколько ошибок, которыми я поделюсь с вами, чтобы минимизировать боль. Некоторые из этих вещей не очевидны из документации.
Первое, что вам нужно, это компилятор отчетов Jasper. Это отвечает за компиляцию файла jrxml в объект JasperDesign. Есть несколько реализаций этого, но вам нужна JRJdtCompiler. Вы можете создать и внедрить это в контексте приложения Spring. Избегайте других, таких как компилятор BeanShell, поскольку запуск отчета в виде большого скрипта BeanShell не очень быстрый и не эффективный (я понял это непросто, прежде чем стал лучше).
Вам нужно будет включить файлы jar для JRJdtCompiler. Я думаю, что полный Jasper Reports dist включает эту банку. Это продукт затмения.
Вы можете хранить JasperDesign где угодно (HttpSession, контекст сервлета или любой другой). Метод fillReport () является основным, который вас интересует. Он создает объект JasperPrint, который является экземпляром отчета о выполнении. Параметры просто передаются в виде карты.
Теперь, чтобы создать версию в HTML, PDF и т. Д., Вам нужно ее экспортировать. Для этого вы используете классы, такие как JRHtmlExporter и JRPdfExporter. Они требуют определенных параметров. Самое сложное - это экспортер HTML, потому что HTML явно не включает изображения. Jasper включает в себя класс ImageServlet, который извлекает их из сеанса (куда их поместил JRHtmlExporter), но вы должны точно настроить конфигурацию как экспортера HTML, так и сервлета изображения, и трудно сказать, где вы идете не так. *
Я не помню специфику этого, но есть пример всего этого в Jasper Reports Definition Guide , который я настоятельно рекомендую вам получить, если вы вообще тратите время с этим товар. Это довольно дешево на 50 долларов США. Вы также можете получить годовую подписку, но за 18 с лишним месяцев, которые я видел, я не видел ни одного изменения. Просто купите новую версию, когда она выйдет, если она вам нужна (что, вероятно, вам не понадобится).
Надеюсь, это поможет.