Как настроить адаптер данных при запуске отчета через API остальных 2 - PullRequest
0 голосов
/ 24 апреля 2018

Я использую Jasper Server 6.3 Community Edition.У меня есть набор отчетов, которые я хочу выполнять для разных баз данных.У меня есть адаптер данных, определенный для каждой базы данных.Я хочу иметь возможность выполнить любой из этих отчетов через API остальных 2 и просто сказать ему использовать другой адаптер данных.

Часть XML, относящаяся к этому параметру в jrxml:

<property name="net.sf.jasperreports.data.adapter" value="common\test.xml"/>

Идеальная ситуация была бы, чтобы иметь возможность передавать любое значение, которое я хочу заменить common\test.xml

Из того, что я могу сказать, нет встроенного параметра для установки данныхадаптер, и нельзя использовать параметр, чтобы установить это либо.Другими словами, это не сработает:

<property name="net.sf.jasperreports.data.adapter" value="$P!{data_adapter_path}"/>

Итак, как можно динамически установить значение net.sf.jasperreports.data.adapter с помощью API остальных 2?

1 Ответ

0 голосов
/ 26 апреля 2018

Самое простое решение - это обновить хотя бы до JasperReports Server 6.4.0, где вы могли бы использовать propertyExpression вместо property, вот так (я публикую только соответствующий фрагмент):

<propertyExpression name="net.sf.jasperreports.data.adapter"><![CDATA[$P{DataAdapterLocation}]]></propertyExpression>
<parameter name="DataAdapterLocation" class="java.lang.String" evaluationTime="Early">
    <defaultValueExpression><![CDATA["default/path/to/DataAdapterFile"]]></defaultValueExpression>
</parameter>

Параметр evaluationTime="Early" необходим для того, чтобы это работало.

Другое, но сложное решение, которое не требует обновления, будет включать создание источников данных JDBC (через интерфейс ).или REST API) и присвоение их соответствующему блоку отчетов.В этом посте показано, как этого добиться, используя jrs-rest-java-client .

...