0

こんにちは、struts2 s:if タグを使用して 2 つの値を比較しようとしていますが、機能していません。値をハードコードすると機能しますが、動的にしたいです。

変数 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:if については、toString と equals() も試しました。値をハードコーディングした場合にのみ機能します。例:

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

手がかりはありますか?

ありがとうございました。

4

2 に答える 2

3

文字列比較はequals()notを使用して行う必要があります==

アクション:

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>
于 2010-03-18T16:05:51.053 に答える
0

反対の方法を試すのはどうですか?

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

補足:structs2を直接使用したことはありませんが、grailsを使用しました。テストを中括弧内に埋め込んではいけませんか?

<s:if test="%{#currentLongValue == Long.parseLong(#stringValue)}" >
于 2010-03-18T15:48:19.277 に答える