2009-10-02 55 views
0

編譯我的JRXML文件時的iReport 3.1.2我得到這個錯誤:JRXML操作錯誤

​​

在我使用的是運營商我的整個報告中的唯一的地方>是在這裏:

<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模板專家對發生的事情有一個模糊的想法?

回答

1

想出如何比較2個整數的JRXML。相反,這樣做的:

$P{sectionId} > new Integer("0") 

解決的辦法是這樣的:

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

這看起來有點令人費解,但它爲我工作。 :)

0

雖然你和你自己蘭斯洛特之間的獨白,是年齡在medival次老起源,我不得不給出一個公正的警告,可能想借此古老的傳說,以他們的圖書館的旅客。如果您想知道$ P {sectionId}是否大於新整數(「0」),那麼即使$ 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) 

很抱歉,如果你已經知道的基本知識和你的第二個帖子只是爲了表明解決問題的一種常見方式,但我想,如果一個新手正在閱讀你的第一篇文章,他/她可能會假設,一個能夠找到大於0的數字,並附帶發佈的解決方案。