为什么 Jasper Reports 在服务器中显示空报告,但在 jasper studio 中正确生成
Why Jasper Reports shows empty report in server, but generates correctly in jasper studio
我正在使用 Jasper Studio 6.6.0 和 Jasper server 7.1。
我已经使用来自指定 URL 的图像创建了一个简单的报告。
它在 Jasper Studio 中正确生成,但在服务器中它显示为空。
请参考附件图片:
服务器截图
碧玉截图
如果您想在没有数据源或空数据源的情况下在 JasperReport 中显示某些内容,那么您有两个选择:
1) 设置 When No Data Type 属性 on All Section No Detail[= Jasper Studio 中的 34=] 选项:
在 JRXML 中,可以通过在根 <jasperReport>
元素上设置 whenNoDataType="AllSectionsNoDetail"
属性来完成。
2) 或者您可以将没有数据时要显示的内容移动到报告的 无数据 区域:
在 JRXML 中,可以通过添加以下内容来完成:
<noData>
<band height="110">
<image>
<reportElement x="0" y="0" width="240" height="110" uuid="d4b9e59b-896e-4881-92a2-c6707c975312"/>
<imageExpression><![CDATA["https://my.image.url/getImage?name=penguin"]]></imageExpression>
</image>
</band>
</noData>
JasperReport 在默认情况下没有数据时呈现空白页面,而 JasperServer 显示 报告为空,因此 select 从上面的选项中您希望能够显示你想要的图像。
在没有提供数据源时不出现空页面的最好方法是欺骗 jasper 认为有数据源:
1) 定义数据适配器(一个简单的 .xml 文件)并将其放入报告文件夹中:
<?xml version="1.0" encoding="UTF-8" ?><emptyDataAdapter class="net.sf.jasperreports.data.empty.EmptyDataAdapterImpl"><name>Data Adapter fake</name><recordCount>1</recordCount></emptyDataAdapter>
2) Link 进入主报告:
<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="repor" language="javascript" pageWidth="612" pageHeight="792" whenNoDataType="NoDataSection" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isFloatColumnFooter="true" uuid="c0eee90e-1b1a-4f34-ad99-1112847752de">
<property name="net.sf.jasperreports.data.adapter" value="EmptyDataAdapter.xml"/>
前缀 "repo:" 到数据适配器的 属性 的值,如果 xml 部署在 jasper 服务器上。
属性 "whenNoDataType" 将被忽略。
其他详细信息here。
我正在使用 Jasper Studio 6.6.0 和 Jasper server 7.1。
我已经使用来自指定 URL 的图像创建了一个简单的报告。
它在 Jasper Studio 中正确生成,但在服务器中它显示为空。
请参考附件图片:
服务器截图
如果您想在没有数据源或空数据源的情况下在 JasperReport 中显示某些内容,那么您有两个选择:
1) 设置 When No Data Type 属性 on All Section No Detail[= Jasper Studio 中的 34=] 选项:
在 JRXML 中,可以通过在根 <jasperReport>
元素上设置 whenNoDataType="AllSectionsNoDetail"
属性来完成。
2) 或者您可以将没有数据时要显示的内容移动到报告的 无数据 区域:
在 JRXML 中,可以通过添加以下内容来完成:
<noData>
<band height="110">
<image>
<reportElement x="0" y="0" width="240" height="110" uuid="d4b9e59b-896e-4881-92a2-c6707c975312"/>
<imageExpression><![CDATA["https://my.image.url/getImage?name=penguin"]]></imageExpression>
</image>
</band>
</noData>
JasperReport 在默认情况下没有数据时呈现空白页面,而 JasperServer 显示 报告为空,因此 select 从上面的选项中您希望能够显示你想要的图像。
在没有提供数据源时不出现空页面的最好方法是欺骗 jasper 认为有数据源:
1) 定义数据适配器(一个简单的 .xml 文件)并将其放入报告文件夹中:
<?xml version="1.0" encoding="UTF-8" ?><emptyDataAdapter class="net.sf.jasperreports.data.empty.EmptyDataAdapterImpl"><name>Data Adapter fake</name><recordCount>1</recordCount></emptyDataAdapter>
2) Link 进入主报告:
<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="repor" language="javascript" pageWidth="612" pageHeight="792" whenNoDataType="NoDataSection" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isFloatColumnFooter="true" uuid="c0eee90e-1b1a-4f34-ad99-1112847752de">
<property name="net.sf.jasperreports.data.adapter" value="EmptyDataAdapter.xml"/>
前缀 "repo:" 到数据适配器的 属性 的值,如果 xml 部署在 jasper 服务器上。
属性 "whenNoDataType" 将被忽略。
其他详细信息here。