Подтвердить что ты не робот

Связывание подписок в iReport, поэтому они также работают на сервере Jasper

Использование iReport v4.0.1 с Jasperserver v4.1.0. Я пытаюсь найти синтаксис для привязки вложенных отчетов к основному отчету, который позволяет мне протестировать его в iReport, а затем развернуть на сервер через браузер хранилища.

Синтаксис по умолчанию для подзадач в iReport для выражения подрепортажа похож на

$P{SUBREPORT_DIR} + "mySubReport.jasper"

Когда вы развертываете это из iReport, он достаточно умен, чтобы выбрать это и предложить изменить его на

"repo:mySubReport.jrxml"

и затем развернуть все вложенные записи в папку "Ресурсы" основного отчета.

Это замечательно, но, к сожалению, он редактирует файл в iReport, чтобы сохранить это изменение, что означает, что вы больше не можете запускать отчет в iReport без ручного повторного редактирования всех выражений суб-отчета - это делает процесс тестирования и развертывания на сервер действительно больно, особенно когда в отчете есть несколько подзадач.

Я думал, что я мог бы хотя бы установить значение $P {SUBREPORT} как "repo:" или "My\local\filepath", чтобы по крайней мере у меня было только одно место для его изменения, но компилятор не нравится.

Есть ли альтернативная структура или выражение, которое будет решено выполнить репо: *. jrxml или My\local\filepath *.jasper правильно в зависимости от того, откуда вы запускаете отчет?

4b9b3361

Ответ 1

Лучшим решением для этого является добавление дополнительного параметра, такого как $P{IsOnServer}. Задайте значение по умолчанию true. Для выражения вашего подрепортажа используйте это:

$P{IsOnServer} ? "repo:mySubReport.jrxml" : "/local/path/to/mySubReport.jasper"

Когда вы запустите отчет в iReport, вам будет предложено указать значение IsOnServer. Сделайте его ложным; выражение подрепортажа будет разрешено для вашего локального файла. На сервере не определяйте элемент управления ввода. Пользователям никогда не будет предложено указать этот параметр (они даже не знают, что он существует), и это приведет к желаемому синтаксису репо.

Разумеется, даже лучшее решение для iReport должно обрабатывать это автоматически... но теперь вам нужно сделать что-то вроде этого.