json - 为什么我使用 json 文件作为数据源得到空报告?
问题描述
我正在使用 tibco jaspersoft studio 生成报告
删除详细信息带中的字段正在获取所有数据,但是当我尝试使用表格时,我得到两个空页面。
打印选项设置为打印所有部分没有详细信息
这是我的数据 json 文件
[ {
"clientName" : "SEMMOUD Abderrazak",
"clientPhone" : "043303854",
"codeExterne" : "CLI201801",
"email" : "talcorpdz@gmail.com",
"clientType" : 0,
"clientEtat" : 1,
"identifiant" : "TalcorpDZ",
"contacts" : [ {
"nom" : "Taleb",
"prenom" : "Mohammed Housseyn",
"telephonePortable" : "04330256699",
"email" : null
} ],
"adresses" : [ {
"adress" : "Batiments des enseignants Mohammed Khemisti",
"ville" : "Maghnia"
} ]
}, {
"clientName" : "",
"clientPhone" : "",
"codeExterne" : "sdsqdqs",
"email" : "talcorpdz@gmail.com",
"clientType" : 1,
"clientEtat" : 1,
"identifiant" : "sqdsqd",
"contacts" : [ {
"nom" : "Taleb",
"prenom" : "Mohammed",
"telephonePortable" : "+213778217469",
"email" : null
} ],
"adresses" : [ {
"adress" : "Batiments des enseignants ",
"ville" : "Maghnia"
} ]
} ]
这是我的报告
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="refClient" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" whenResourceMissingType="Empty" uuid="758785c8-ae8f-49bd-9995-19c9827a7ebb">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="refcliJsonAdapter"/>
<subDataset name="jsonRefClient" whenResourceMissingType="Empty" uuid="1dcb37f4-96e4-472a-aadb-309de9d05089">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="refcliJsonAdapter"/>
<queryString language="json">
<![CDATA[]]>
</queryString>
<field name="clientName" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="clientName"/>
<fieldDescription><![CDATA[clientName]]></fieldDescription>
</field>
</subDataset>
<queryString language="JSON">
<![CDATA[]]>
</queryString>
<field name="clientName" class="java.lang.String">
<property name="net.sf.jasperreports.json.field.expression" value="clientName"/>
<fieldDescription><![CDATA[clientName]]></fieldDescription>
</field>
<detail>
<band height="258" splitType="Stretch">
<componentElement>
<reportElement x="40" y="10" width="660" height="200" uuid="a43c33cc-e3f9-470c-8df4-1c36301c869e">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
<property name="com.jaspersoft.studio.components.autoresize.proportional" value="true"/>
<property name="com.jaspersoft.studio.components.autoresize.next" value="true"/>
</reportElement>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="jsonRefClient" uuid="b4a19c4b-0cb1-481a-a9ba-739ce437135a">
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
<jr:column width="660" uuid="eda57584-75da-466c-8182-d466356f3cc4">
<jr:tableHeader height="30" rowSpan="1"/>
<jr:tableFooter height="30" rowSpan="1"/>
<jr:columnHeader height="30" rowSpan="1">
<staticText>
<reportElement x="0" y="0" width="660" height="30" uuid="d349739f-3e3d-4012-8e52-3b5c7bd75eb9"/>
<text><![CDATA[clientName]]></text>
</staticText>
</jr:columnHeader>
<jr:columnFooter height="30" rowSpan="1"/>
<jr:detailCell height="30">
<textField>
<reportElement x="0" y="0" width="660" height="30" uuid="fb6bb53f-e520-48f4-81e0-189ae5058656"/>
<textFieldExpression><![CDATA[$F{clientName}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
</band>
</detail>
</jasperReport>
我应该怎么做才能解决这个问题?
解决方案
在运行时,您的表数据集实际上并未链接到任何数据。快速解决方法是:
- 将您的 JSON 数据适配器导出到与您的报告处于同一级别的文件中,例如refcliJsonAdapter.xml
将
net.sf.jasperreports.data.adapter
属性添加到您的表数据集中,例如:<subDataset name="jsonRefClient" whenResourceMissingType="Empty" uuid="1dcb37f4-96e4-472a-aadb-309de9d05089"> ... <property name="net.sf.jasperreports.data.adapter" value="refcliJsonAdapter.xml"/> ... </subDataset>
One Empty Record
如果您不想重复表格,请根据内置数据适配器预览报告。
推荐阅读
- cakephp - 蛋糕PHP。如何将控制器方法调用到控制器中?
- mysql - 从 App 脚本到本地 MySQL 的 JDBC 连接
- amazon-web-services - 使用引用另一个模板的模板引导 EC2 实例
- powershell - 管道和过滤的最佳方法是什么?
- php - 一个脚本出现“MySQL PHP 扩展不可用”错误,而其他一切正常
- reactjs - 我应该在哪里为 React 组件库添加配置文件
- python - 序列中最长连续元素的长度
- javascript - 移动菜单图标未显示在 Safari 或移动设备上
- r - 将 tmap 图例从基于符号更改为基于填充
- java - 验证处理时间的有效方法