2016-07-26 7 views
-1

アクションクラスにハッシュマップがあります。私はキーが画面に特定のテキストを表示するために存在しないかどうかを確認しようとしています。しかし、それは動作していません。ハッシュマップにキーが存在するかどうかを調べるJSP Struts 2

<s:elseif test="%{#map[getCurrentYear()]==null && #map.key.equalsIgnoreCase(cdKey)}"> 
    <h4> 
     2 
     <s:text name="properties.msg.header" /> 
     <s:property value="currentYear"  /> 
    </h4> 
</s:elseif> 

私はコードと間違っているものを取得することはできませんよ:以下のコードです。

+0

'map'とは何ですか? 'getCurrentYear()'とは何ですか? '#map.key'とは何ですか? 'cdKey'とは何ですか?コードを表示する。 –

+0

トピックはありません。 –

+0

@ Andrea私は、getterとsetterでActionクラスに定義されたフィールドを持っています。プライベートString cdKey = 'cdKey'とプライベートString cyQKey = 'cyQKey'。私はこれらのキーを格納している1つのハッシュマップ - マップを持っています。私はcyQKeyがマップに存在していないかどうかを確認しようとしていますが、cdKeyが存在する場合はメッセージを表示します。 \t \t \t \t \t \t \t \t \t \t \t \t \t \t – JJN

答えて

0

マップがgetMap()ゲッターを持つアクション属性である場合、#を使用する必要はありません。 getCurrentYear()もOGNLのcurrentYearになります。

<s:elseif test="isValueEqualToCdKey" > 
で、

public boolean isValueEqualToCdKey(){ ... } 

方法では、サーバーサイドをやっている場合、この

<s:elseif test="%{map[currentYear]==null && map.key.equalsIgnoreCase('cdKey')}"> 

は十分で、これは方法よりシンプル(かつエレガント)になることに注意してください

+0

こんにちは、上記溶液私のために動作しませんでした。 getterメソッドとsetterメソッドを持つマップがあります。プライベートマップ> map = new LinkedHashMap >(); #didnt workを削除する – JJN

+0

まず、テストを分けてください。 (s:if/s:elseの前に)年テストでs:プロパティを、キーの等価性テストでもう1つ失敗したものを確認してください。 –

+0

s:ifとelseを付け加えましたが、 S:試験= "%{マップ[currentYear] == NULL}"> \t AA Abcの \t ABCDE – JJN

0

リスト>マップ=新しいLinkedHashMap>(); はjspのように呼び出されます

<s:property value="#map.[#key]"/> 
関連する問題