2010-03-18 42 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)}" >