我的问题是当我使用isblankwhennull =true
时,它会用空格替换所有字段。
我不希望null
的地方有空格。我想要"n/a"
或"-"
。我搜索了很多相关的问题,他们给出了解决方案。
($F{address_street1}.equals(null) ? "" : $F{address_street1}+ " ")
但似乎如果我使用了这个,我必须在我的 JasperReports 的报告中进行更改,这不是我想要的。
我想要与isblankwhennull
类似,但它应该用"-"
替换null或者我想要在那里设置。
答案 0 :(得分:2)
您可以修改查询并获取修改后的数据,然后再将其用于jasper报告,
COALESCE(NULLIF(Person.NAME,''), 'N/A')
简而言之,只需在将数据设置为数据源之前修改数据。
您可以在主文本字段中添加值为N/A
或-
的新静态文本,并为{em>主文本字段设置isBlankWhenNull="true"
并在表达 时使用 打印新添加的静态文本。
$F{name}==null
例如
<textField isBlankWhenNull="true">
<reportElement key="" x="180" y="0" width="200" height="16"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
</textElement>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<staticText>
<reportElement key="" x="180" y="0" width="200" height="16">
<printWhenExpression><![CDATA[$F{name}==null]]></printWhenExpression>
</reportElement>
<textElement textAlignment="Center"/>
<text><![CDATA[N/A]]></text>
</staticText>
<强> 注 强>
但我认为如果字段更多,$F{name}.equals(null) ? "-" :$F{name}
比第二种解决方案更好。