【问题标题】:Jasperreports - how to get JSON to populate a subreportJasperreports - 如何让 JSON 填充子报表
【发布时间】:2013-02-18 16:36:38
【问题描述】:

我正在尝试使用 Jasper/iReport 在我的主报告中使用相同的数据填充表格。我怎样才能让 Json 结转?

在我尝试过的编辑表数据源中:

((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE})

new ((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE})

$P{REPORT_DATA_SOURCE}

$P{REPORT_CONNECTION}

所有这些都编译,但没有一个实际生成表。有任何想法吗? JSON 没有像 cloneDataSource() 这样的方法,那么还有什么替代方法?

我的最终目标很简单:传入 JSON 数据并使用它生成图表,然后让表格显示相同的信息。我已经为此工作了好几天,贾斯珀让我很难受。请帮忙!

【问题讨论】:

    标签: json jasper-reports subreport


    【解决方案1】:

    我在使用子报告时遇到了类似的问题。似乎 JSON 数据源已被主报告使用,因此您需要调用 subDataSource() 为您的子报告和表格获取新的数据源 - 虽然尚未测试...

    数据源表达式:((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()

    【讨论】:

    • 啊,是的,那是我的问题。我还没试过,现在就试试。
    • <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()]]></dataSourceExpression> 把我搞定了
    • 它对我不起作用。我收到错误 net.sf.jasperreports.engine.data.JsonDataSourc‌​e cannot be resolve or is not a type
    • 为我工作
    【解决方案2】:

    如果有人在使用 JasperReports 新的图书报告功能(版本 6+ 中可用)并且您想使用 JsonDataSource,这是将 json 有效负载传递给子报告的方法:

    <p:subreportPart xmlns:p="http://jasperreports.sourceforge.net/jasperreports/parts" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/parts http://jasperreports.sourceforge.net/xsd/parts.xsd">
      <subreportParameter name="REPORT_DATA_SOURCE">
        <subreportParameterExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource()]]></subreportParameterExpression>
      </subreportParameter>
      <subreportExpression><![CDATA["PROFILES_cover.jasper"]]></subreportExpression>
    </p:subreportPart>
    

    您还可以通过提供节点位置作为subDataSource(java.lang.String selectExpression) 方法的参数来传递 json 有效负载的子集。例子:

    .subDataSource("Northwind.Customers")
    

    .subDataSource("Northwind.Customers(Country == USA)")
    

    【讨论】:

      【解决方案3】:

      只需在主报告中添加数据源表达式:

      <subreport>
          <reportElement x="-6" y="0" width="570" height="59" uuid="ac54a12b-8022-49a1-bc90-90cff664e3a1" />
          <dataSourceExpression>
              <![CDATA[((net.sf.jasperreports.engine.data.JsonDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("footer")]]>
          </dataSourceExpression>
          <subreportExpression>
              <![CDATA["footer.jrxml"]]>
          </subreportExpression>
      </subreport>
      

      它对我有用。希望它会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-14
        • 2013-11-11
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        • 2012-01-19
        • 1970-01-01
        相关资源
        最近更新 更多