Templates JRXML运算符错误

Templates JRXML运算符错误,templates,operators,jasper-reports,Templates,Operators,Jasper Reports,在iReport 3.1.2中编译JRXML文件时出现此错误: com.jaspersoft.ireport.designer.errorhandler。ProblemItem@f1cdfb未为参数类型java.lang.Integer、java.lang.Integer net.sf.jasperreports.engine.design定义运算符>。JRDesignExpression@eb40fe 在整个报告中,我使用操作符>的唯一位置是: 新的整数(“0”)?新字符串(“AND l

在iReport 3.1.2中编译JRXML文件时出现此错误:


com.jaspersoft.ireport.designer.errorhandler。ProblemItem@f1cdfb未为参数类型java.lang.Integer、java.lang.Integer net.sf.jasperreports.engine.design定义运算符>。JRDesignExpression@eb40fe

在整个报告中,我使用操作符>的唯一位置是:


新的整数(“0”)?新字符串(“AND loctn_sctn_id=“+$P{sectionId}”):新字符串(“”]]>

谷歌不是我的朋友。任何Jasper模板专家都不清楚发生了什么?

知道如何比较JRXML中的2个整数。而不是这样做:

$P{sectionId} > new Integer("0")
解决办法是:

$P{sectionId}.compareTo(new Integer("0")) != 0

这看起来有点复杂,但对我来说很有效。:)

尽管你和你自己之间的这段独白,兰斯洛特爵士,由来已久,起源于中世纪,但我必须向那些可能想把这一古老知识带到图书馆的旅行者发出一个合理的警告

如果您想知道$p{sectionId}是否大于新整数(“0”),那么您的解决方案将生成true,即使$p{sectionId}小于新整数(“0”)

原因:

(new Integer("-5")).compareTo(new Integer("0"))
将导致:

-1
它将不是0,如中所示:

$P{sectionId}.compareTo(new Integer("0")) != 0
因此,这个条件也是正确的

只需使用:

$P{sectionId}.compareTo(new Integer("0")) == 1
记住:

x.compareTo(0) == 1 (if x > 0)
x.compareTo(0) == 0 (if x == 0)
x.compareTo(0) == -1 (if x < 0)
x.compareTo(0)==1(如果x>0)
x、 比较(0)==0(如果x==0)
x、 比较(0)==-1(如果x<0)
抱歉,如果你已经知道了基本知识,你的第二篇文章只是为了展示解决问题的一种常见方法,但是我想如果一个新手正在阅读你的第一篇文章,他/她可能会假设,他/她能够找到大于0的数字,并使用发布的解决方案