我有一个带子报告的报告,可以在主报告中添加徽标。在这个子报告中,我有2个细节带来支持两个不同大小的徽标;一个是长的,另一个是大约3长(宽)。有点像......
........................... |---------logo------------| address 1, address 2 ........................... |__logo__| address 1 | | address 2 ...........................
第1行和第2行之间是详情1 频段,第2和第3行之间是详情2 频段。
我正在尝试使用“Print When Expression”来根据$F{LogoName}
的值切换第1或第2个细节带。
详情1 乐队:
new Boolean($F{LogoName}=="acompanyname")
明细2 乐队:
new Boolean($F{LogoName}!="acompanyname")
但它不起作用。
也试过这些:
(($F{LogoName}=="acompanyname")?Boolean.TRUE:Boolean.FALSE)
(($F{LogoName}!="acompanyname")?Boolean.TRUE:Boolean.FALSE)
$F{LogoName}
是“公司名称”。
每次运行报告时,只会显示详细信息2 频段。我无法获得详细信息1以显示任何错误信息。
欢迎任何帮助。
谢谢
答案 0 :(得分:0)
试试这个:
$F{LogoName}.equals( "acompanyname" )
在Java中,等于运算符(==
)在对象上使用时,会检查它们是否与同一对象的引用相同。这一点可以捕获所有没有大量Java编程经验的报表开发人员。你可以写:
$F{LogoName} == $F{LogoName}
这将返回true
,正如您所期望的那样,因为equals运算符两侧的两个对象都是相同的。请考虑以下事项:
public class T {
public static void main( String args[] ) {
String s1 = "hello";
String s2 = (new StringBuilder( s1 )).toString();
System.out.println( s1 );
System.out.println( s2 );
System.out.println( s1 == s2 );
}
}
打印:
hello
hello
false
字符串对象的值是相同的,但字符串的引用是不同的。 equals操作比较引用,而不是值。