在iReport 3.1.2中编译我的JRXML文件时出现此错误:
com.jaspersoft.ireport.designer.errorhandler.ProblemItem@f1cdfb The operator > is undefined for the argument type(s) java.lang.Integer, java.lang.Integer net.sf.jasperreports.engine.design.JRDesignExpression@eb40fe
我整个报告中唯一使用运算符的地方>在这里:
<parameter name="dynamicSectionCondition" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA[($P{sectionId} != null && $P{sectionId} > new Integer("0")) ? new String("AND loctn_sctn_id = " + $P{sectionId}) : new String("")]]>
</defaultValueExpression>
</parameter>
谷歌并不是我的朋友。任何Jasper模板专家对于发生了什么都有一个模糊的想法?
答案 0 :(得分:1)
想出如何比较JRXML中的2个整数。而不是这样做:
$P{sectionId} > new Integer("0")
解决方案是:
$P{sectionId}.compareTo(new Integer("0")) != 0
这看起来有些令人费解,但它对我有用。 :)
答案 1 :(得分:0)
虽然你和你之间的这段独白Lancelot爵士,虽然年代久远,起源于中世纪时期,但我必须向旅行者发出警告,他们可能希望把这个古老的传说带到他们的图书馆。
如果你想知道$ P {sectionId}是否大于新的整数(&#34; 0&#34;),那么即使$ P {sectionId}小于new Integer,你的解也会产生正确的结果( &#34; 0&#34;。)
原因:
(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)
很抱歉,如果您已经了解基本知识,而您的第二篇文章只是为了展示解决问题的常用方法,但我想如果新手正在阅读您的第一篇文章,他/她可能会假设,那个人能够找到使用已发布的解决方案,大于0的数字。