Jasper reports 如何处理;“未找到字节数据”;

Jasper reports 如何处理;“未找到字节数据”;,jasper-reports,Jasper Reports,我希望我的报表根据其他一些字段的值以行的形式显示图像。比如说: column_1 | column_2 ====================== xyz | <xyz.jpg> abc | <abc.jpg> 第1列第2列 ====================== xyz| abc| 列_1保存文本,列_2显示文件text+“.jpg”中的图像。为此,我将图像表达式设置为:$F{COLUMN_1}+“.jpg” 问题是有时可能(在我的例子中

我希望我的报表根据其他一些字段的值以行的形式显示图像。比如说:

column_1 | column_2
======================
  xyz    | <xyz.jpg>
  abc    | <abc.jpg>
第1列第2列
======================
xyz|
abc|
列_1保存文本,列_2显示文件text+“.jpg”中的图像。为此,我将图像表达式设置为:$F{COLUMN_1}+“.jpg”

问题是有时可能(在我的例子中是:将会)不存在具有适当名称的图像文件。这将生成“填充打印时出错…在:[some_image_path]中找不到字节数据”


当指定的文件不存在时,是否有办法处理此类错误,例如,通过显示一些默认图像?

事实证明,可以使用“onErrorType”确定图像出错时会发生什么情况。以下是一个例子:

<image scaleImage="RealHeight" hAlign="Center" vAlign="Middle" onErrorType="Blank">

这将在找不到图像文件时将图像设置为空白,而不是以错误结束。

视图设计器-> 属性->参数->单击左侧->添加-> 子报表参数名称 形象 值表达式
双击IMAGEN(参数)选择此选项

在XML代码中查找图像数据可能如下所示

<image>
     <reportElement x="0" y="0" width="164" height="126"/>
     <imageExpression class="java.lang.String">
         <![CDATA["coffee.jpg"]]>
     </imageExpression>
</image>
<![CDATA["src\\formsAndReports\\coffee.jpg"]]>

Tosz的解决方案确实有效,但不是很灵活:您只能得到一个空白帧,或者一个默认图标而不是图像

要指定自定义行为,可以使用以下表达式:

$P{REPORT_FILE_RESOLVER}.resolveFile( $F{COLUMN_1}+ ".jpg" )
当找不到文件时,它返回null。 例如,可以将其用作图像表达式,并通过简单的检查指定默认图像:

$P{REPORT_FILE_RESOLVER}.resolveFile( $F{COLUMN_1}+ ".jpg" ) != null ? $F{COLUMN_1}+ ".jpg" : "default.jpg"
这篇文章可能会帮助你: