如果在TextField中声明

时间:2018-05-25 13:29:53

标签: jasper-reports

我想在我的表中显示不同的列标题文本,并且在此标题中也有不同的值。标题文本和值取决于一个参数值。此参数在报表的“参数”部分中定义为String,我也在“预览”视图中看到它,我也在那里给它一个值。

我的问题是,它不起作用(此列始终为空:没有标题文本,没有详细值):)如何正确使用任何IF语句?这是我的表头代码:

($P{first_column} == "first_column") ? "First Column" : ($P{first_column} == "second_column" ? "Second Column" : ($P{first_column} == "third_column" ? "Third Column" : ""))

我做错了什么?谢谢!

编辑:

这是从“源”视图复制的TextField表达式:

<textField>
                <reportElement mode="Opaque" x="0" y="0" width="58" height="30" backcolor="#CFCFCF" uuid="96edf250-4a1c-4448-8995-3753c76f4a1e"/>
                <textElement verticalAlignment="Middle">
                    <font size="9"/>
                </textElement>
                <textFieldExpression><![CDATA[($P{first_column}.equals("first_column") ? "First Column" : ($P{first_column}.equals("second_column") ? "Second Column" : ""))]]></textFieldExpression>
            </textField>

1 个答案:

答案 0 :(得分:0)

Java中的字符串比较是通过equals()方法完成的。 This post解释了它。

假设你有基于java.lang.String的参数,你可以这样做:

($P{first_column}.equals("second_column") ? "Second Column" : ($P{first_column}.equals("third_column") ? "Third Column" : ""))