2010-03-18 1 views
0

Привет всем Я пытаюсь сравнить два значения, используя struts2 s: if tag, но не работает. Если я жестко задаю значения, которые он использует, но я хочу, чтобы он был динамическим.Сравнение Длинные значения 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

Спасибо за все ваши ответы. На самом деле я нажимал неправильный метод обработчика действий, поэтому не создавал экземпляр компонента, используемого в JSP ... глупо меня. Я изменил свой == на toString(). Equals(), и он отлично работает. Благодаря! – Marquinio

0

Как насчет того, чтобы попробовать обратный путь?

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

Примечание стороны: Я никогда не использовал structs2 непосредственно, но я работал с Граалей .. не встраивать тест внутри скобок?

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