Spring JasperReports Изображения Расположение - PullRequest
4 голосов
/ 19 июля 2011

JasperReport требует (по умолчанию), чтобы изображения были в "WEB-INF / classes /".Я хотел бы поделиться изображениями между PDF-файлами и обычными страницами JSP.Я бы предпочел не загромождать путь к классам мусорными файлами изображений.Как заставить JR использовать другое местоположение для изображений?

Ответы [ 3 ]

4 голосов
/ 20 июля 2011

В моей книге Незаменимый я рекомендую создать следующие параметры отчета:

  • ROOT_DIR - "/reports/"
  • IMAGE_DIR - $P{ROOT_DIR} + "images/"
  • STYLE_DIR - $P{ROOT_DIR} + "styles/"
  • SUBREPORT_DIR - $P{ROOT_DIR} + "subreports/"
  • COMMON_DIR - $P{SUBREPORT_DIR} + "common/"

Это позволяет каталогу изображений относиться к пути ROOT_DIR. Это также позволяет вам динамически изменять ROOT_DIR. Параметры должны быть объявлены в относительном порядке.

В вашем случае используется абсолютный путь:

  • ROOT_DIR - "/home/user/"
  • IMAGE_DIR - $P{ROOT_DIR} + "Pictures/"

Обратите внимание, что переключение между операционными системами, структурами каталогов, средами (например, миграция на JasperReports Server из JasperReports & JSF) и т. Д. Может быть выполнено без изменения отчета. (Что ж, для JasperReports Server требуются некоторые изменения.)

2 голосов
/ 22 июля 2011

Следуя совету @ Дейва, я разделил базовый каталог на параметр и дал ему значение по умолчанию. Таким образом, я могу указать абсолютный путь, classpath или url. Вот соответствующие фрагменты кода:

Контроллер:

modelMap.put("ROOT_DIR", "/srv/images/");

-Или-

modelMap.put("ROOT_DIR", "http://site.com/images/");

Файл jrxml:

<parameter name="ROOT_DIR" class="java.lang.String">
    <defaultValueExpression><![CDATA["/home/user/Pictures/"]]></defaultValueExpression>
</parameter>
...
<imageExpression class="java.lang.String">
   <![CDATA[$P{ROOT_DIR}+"leaf_banner_red.png"]]>
</imageExpression>
1 голос
/ 20 июля 2011

При дальнейшей проверке не похоже, что я могу установить «местоположение» для изображений где-либо, но я обнаружил, что вы можете указать изображения 1 из 3 способов:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...