在JasperReports中是否有像isblankwhennull一样的类似功能?

时间:2014-10-07 12:24:08

标签: jasper-reports

我的问题是当我使用isblankwhennull =true时,它会用空格替换所有字段。 我不希望null的地方有空格。我想要"n/a""-"。我搜索了很多相关的问题,他们给出了解决方案。

($F{address_street1}.equals(null) ? "" : $F{address_street1}+ " ") 

但似乎如果我使用了这个,我必须在我的 JasperReports 的报告中进行更改,这不是我想要的。

我想要与isblankwhennull类似,但它应该用"-"替换null或者我想要在那里设置。

1 个答案:

答案 0 :(得分:2)

#SOLUTION 1

您可以修改查询并获取修改后的数据,然后再将其用于jasper报告,

COALESCE(NULLIF(Person.NAME,''), 'N/A')

简而言之,只需在将数据设置为数据源之前修改数据。


#SOLUTION 2

您可以在主文本字段中添加值为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}比第二种解决方案更好。