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

时间:2014-05-20 13:00:44

标签: jasper-reports

我希望我的报告根据其他一些字段的值显示行中的图像。例如。那样:

column_1 | column_2
======================
  xyz    | <xyz.jpg>
  abc    | <abc.jpg>

column_1包含文本,column_2显示文件文本+“.jpg”中的图像。我这样做是通过将图像表达式设置为:$ F {COLUMN_1} +“.jpg”。

问题在于,有时可能(并且在我的情况下:将会发生)不存在具有适当名称的图像文件。这会生成“填写打印错误...在[some_image_path]找不到字节数据”。

有没有办法处理这样的错误,例如,当指定的文件不在时,显示一些默认图像?

4 个答案:

答案 0 :(得分:5)

事实证明,使用'onErrorType'可以判断错误图像会发生什么。这是一个例子:

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

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

答案 1 :(得分:0)

查看设计师 - &gt;  属性 - &GT;参数 - &gt;点击左 - &gt; add-&gt; 子报表参数名称 图片 价值表达 选择whit双击IMAGEN(参数)

答案 2 :(得分:0)

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"

答案 3 :(得分:-1)

在XML代码中查找图像数据,可能看起来像这样

var yourElement = document.getElementById('someId');
var elemWidth = window.getComputerStyle(yourElement).getPropertyValue("width");
var parent = yourElement.parentNode;
var parentWidth =window.getComputerStyle(parent).getPropertyValue("width");
var calculatePercentage = (100*parseFloat(elemWidth)/parentWidth)+'%';

reactiveValues更改为完整路径,就像这样

my_data <- read.csv("whatever_raw_file.csv")
counter <- reactiveValues( A = 0, B = 0)

# inside some reactive expression
for (i in 1:length(my_data)) {
  if (my_data[i] > user_input_value) {
    counter$A <- isolate(counter$A) + 1
  } else {
    counter$B <- isolate(counter$B) + 1
  }
}