2016-07-26 28 views
-1

Ich habe eine Hashmaps in einer Action-Klasse. Ich versuche zu prüfen, ob ein Schlüssel nicht vorhanden ist, um einen bestimmten Text auf dem Bildschirm anzuzeigen. Es funktioniert jedoch nicht. unten ist der Code:prüfen, ob ein Schlüssel in einer Hash-JSP Struts 2 vorhanden ist

<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> 

ich nicht in der Lage bin zu bekommen, was mit dem Code falsch ist.

+0

Was ist 'map'? Was ist 'getCurrentYear()'? Was ist '# map.key'? Was ist 'cdKey'? Zeigen Sie Ihren Code. –

+0

Kein Thema hier. –

+0

@Andrea Ich habe ein Feld in Action-Klasse mit Getter und Setter definiert. private String cdKey = 'cdKey' und private String cyQKey = 'cyQKey'. Ich habe eine Hashmap - map welche diese Schlüssel speichert. Ich versuche zu überprüfen, ob cyQKey in der Karte nicht vorhanden ist und wenn cdKey vorhanden ist, zeige eine Nachricht an. \t \t \t \t

\t \t \t \t \t \t \t JJN

Antwort

0

Wenn Karte ein Aktionsattribut mit einem getMap() Getter ist, müssen Sie # nicht verwenden; auch getCurrentYear() wird currentYear in OGNL.

Diese

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

sollte genug sein, aber beachten Sie, dass dies wäre viel einfacher (und elegant), wenn serverseitig durchgeführt, in einer

public boolean isValueEqualToCdKey(){ ... } 

Methode, mit

<s:elseif test="isValueEqualToCdKey" > 
+0

Hallo, Die obige Lösung nicht für mich arbeiten . Ich habe die Karte mit Getter und Setter Methoden private Karte > map = new LinkedHashMap >(); Entfernen #didnt Arbeit – JJN

+0

Zunächst, trennen Sie die Tests. Setzen Sie (vor dem s: if/s: else) eine s: -Eigenschaft mit dem Jahrestest und eine weitere mit dem Schlüsselgleichheitstest, und sehen Sie, welche –

+0

fehlschlägt. Ich fügte s hinzu: if und else falls wie erwähnt, aber nicht funktioniert < s: if test = "% {map [CURRENT] == null}"> \t AA \t Abc \t ABCDE – JJN

0

Wenn Liste> map = new LinkedHashMap>(); heißt in Jsp wie

<s:property value="#map.[#key]"/>