【问题标题】:Why Jasper Reports shows empty report in server, but generates correctly in jasper studio为什么 Jasper Reports 在服务器中显示空报告,但在 jasper studio 中正确生成
【发布时间】:2018-10-17 07:49:54
【问题描述】:

我正在使用 Jasper Studio 6.6.0 和 Jasper server 7.1。

我创建了一个带有来自指定 URL 的图像的简单报告。

它在 Jasper Studio 中正确生成,但在服务器中显示为空。

请参考附图:

服务器截图 贾斯珀截图

【问题讨论】:

  • 您好像没有提供任何数据源或数据源为空。
  • 我没有使用任何数据源。我只想从提供的 url 加载图像。 (无需数据库连接)

标签: jasper-reports jasperserver jaspersoft-studio


【解决方案1】:

如果您想在没有数据源或空数据源的 JasperReport 中显示某些内容,那么您有两种选择:

1) 在 Jasper Studio 中的 All Section No Detail 选项上设置 When No Data Type 属性:

在 JRXML 中,可以通过在根 <jasperReport> 元素上设置 whenNoDataType="AllSectionsNoDetail" 属性来完成。

2) 或者您可以将没有数据时要显示的内容移动到报告的 No Data 区域:

在 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 显示报告为空,因此请从上述选项中选择一个您希望能够显示所需图像的选项。 p>

【讨论】:

  • 现在 jasper 服务器显示一个空白报告,而不是“报告为空”。但它会为文本和所有(无数据)生成正确的报告
  • 我不确定我是否理解您的评论 - 您的意思是当您使用 whenNoDataType="AllSectionsNoDetail"&lt;noData&gt; 时会显示文本但不会显示图像?
  • 是的。当我使用 whenNoDataType="AllSectionsNoDetail" 或 时,会显示文本标签或静态文本,但图像字段为空白。 (我正在尝试从 url 捕获图像,例如:example.com/test.jpg,如果我尝试从本地系统或工作区捕获图像,它工作正常。如果 url 我面临这个问题。)同样在 Jasper Soft 中它工作正常,但是如果我将报告发布到 Jasper Server ,它会显示为空白
  • 那肯定是图片本身有问题,说明下一个问题。您使用 URL、文件路径、图像字节、...?
  • 得到了解决方案。问题出在文件名上。文件名有特殊字符。现在它在我更改 url 中的文件名后工作正常。谢谢
【解决方案2】:

在没有提供数据源的情况下,最好的办法是让jasper认为有数据源:

1) 定义一个Data Adapter(一个简单的.xml文件)并将其放入reports文件夹:

<?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) 将其链接到主报告中:

<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"/>

如果 xml 部署在 jasper 服务器上,则为数据适配器的属性值添加前缀“repo:”。

属性“whenNoDataType”将被忽略。

其他详情here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多