2010-03-18 69 views
0

嗨,大家我想比較兩個值使用struts2 s:if tag但它不工作。如果我硬編碼它的值,但我希望它是動態的。比較Long值Struts2

變量stringValue的類型爲String。 變量currentLongValue類型爲Long。

<s:set var="stringValue" value="order"/> 
<s:iterator value="listTest"> 
<s:set var="currentLongValue" value="value"/> 

<s:if test="#currentLongValue.toString() == #stringValue" > 
    //Do something  
</s:if> 
<s:else> 
//Do something else 
</s:else> 

</s:iterator> 

對於s:如果我試過toString和equals()。它只適用於硬編碼值。例如:

<s:if test="#currentLongValue == 1234"> 

任何線索?

謝謝。

回答

3

字符串比較應該用做equals()==

操作:

public Long getSomeLongValue() { 
    Long l = 55l; 
    return l; 
} 

public String getSomeString() { 
    return "55"; 
} 

JSP:

<s:if test="someLongValue.toString().equals(someString)"> 
    CAME IN IF 
</s:if> 
<s:else> 
    CAME IN SIDE ELSE 
</s:else> 
+0

感謝您對您的所有答覆。其實我碰到錯誤的Action處理程序方法,因此沒有實例化在JSP中使用的bean ......愚蠢的我。 我把我的==改爲toString()。equals(),它效果很好。謝謝! – Marquinio 2010-03-18 17:12:10

0

如何嘗試相反的方式?

<s:if test="#currentLongValue == Long.parseLong(#stringValue)" > 

附註:我從來沒有直接使用過structs2,但我使用過grails ..不應該將測試嵌入到大括號中嗎?

<s:if test="%{#currentLongValue == Long.parseLong(#stringValue)}" >