我有一个使用json源文件作为数据源的子报表工作报告。在这里为子报表发送路径到子报表json文件net.sf.jasperreports.json.source
Jasper Report - 将json IO流传递给子报表
但是,如果我使用JSON IO流作为数据源而不是json源文件,我如何将数据源传递给子报表?对于单个报表,JSON iostream运行良好,但无法弄清楚如何在此处使用子报表。
我有一个使用json源文件作为数据源的子报表工作报告。在这里为子报表发送路径到子报表json文件net.sf.jasperreports.json.source
Jasper Report - 将json IO流传递给子报表
但是,如果我使用JSON IO流作为数据源而不是json源文件,我如何将数据源传递给子报表?对于单个报表,JSON iostream运行良好,但无法弄清楚如何在此处使用子报表。
要使用从InputStream
json
,我会和使用URL例子,因为这似乎对最可能使用。
的的java代码来生成JsonDataSource
InputStream iostream = new URL("http://www.w3schools.com/website/Customers_MYSQL.php").openStream(); //Natrually this code is not need if you already have the iostrem
JsonDataSource dsSupReeport = new JsonDataSource(iostream);;
如何将它作为参数(允许做2实施例在一个),传递整个JsonDataSource
或只是String
的URL
的值
在java设置你想要传递给你的报告的parameter
(fillManager)
Map<String,Object> paramMap = new HashMap<String,Object>();
paramMap.put("datasource", new JsonDataSource(new URL("http://www.w3schools.com/website/Customers_MYSQL.php").openStream()));
paramMap.put("urlToDataSource", "http://www.w3schools.com/website/Customers_MYSQL.php");
在报告设置与正确的类参数
<parameter name="datasource" class="net.sf.jasperreports.engine.data.JsonDataSource" isForPrompting="false"/>
<parameter name="urlToDataSource" class="java.lang.String" isForPrompting="false"/>
,然后用使用它们的dataSourceExpression
的JsonDataSource
是:
<dataSourceExpression><![CDATA[$P{datasource}]]></dataSourceExpression>
或使用URL的String
值
<dataSourceExpression><![CDATA[new JsonDataSource(new URL($P{urlToDataSource}).openStream())]]></dataSourceExpression>
注意:如果您的数据已经存在于主数据源(不需要新的JsonDataSource),您可以使用子数据集。 Example of subdataset