Jasper reports 在通过REST2 API运行报表时,如何设置数据适配器

Jasper reports 在通过REST2 API运行报表时,如何设置数据适配器,jasper-reports,jasperserver,Jasper Reports,Jasperserver,我使用的是JasperServer6.3社区版。我有一组报告,我希望能够针对不同的数据库执行这些报告。我为每个数据库定义了一个数据适配器。我希望能够通过REST2API执行这些报告中的任何一个,并告诉它使用不同的数据适配器 jrxml中与此设置相关的XML片段是: <property name="net.sf.jasperreports.data.adapter" value="common\test.xml"/> 那么,如何使用REST2API动态设置net.sf.jasperr

我使用的是JasperServer6.3社区版。我有一组报告,我希望能够针对不同的数据库执行这些报告。我为每个数据库定义了一个数据适配器。我希望能够通过REST2API执行这些报告中的任何一个,并告诉它使用不同的数据适配器

jrxml中与此设置相关的XML片段是:

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

那么,如何使用REST2API动态设置
net.sf.jasperreports.data.adapter
值呢?

最简单的解决方案是升级到至少jasperreports服务器6.4.0,在那里可以使用
属性expression
而不是
属性
,就像这样(我只发布了相关的片段):


参数上的
evaluationTime=“Early”
对于此操作至关重要


另一个不需要升级的复杂解决方案涉及创建JDBC数据源(通过或RESTAPI)并将它们分配给适当的报告单元。这显示了如何通过使用来实现这一点。

您是否绑定到JasperReports服务器的6.3版?不,我可以升级到6.3版,但我想继续使用社区版。
<property name="net.sf.jasperreports.data.adapter" value="$P!{data_adapter_path}"/>
<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>