2016-07-26 116 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我在Action類中定義了一個用getter和setter定義的字段。私人字符串cdKey ='cdKey'和私人字符串cyQKey ='cyQKey'。我有一個Hashmap - 映射,它存儲這些鍵。我正在嘗試檢查cyQKey是否不存在於地圖中,如果cdKey存在,則顯示一條消息。 \t \t \t \t \t \t \t \t \t \t \t \t \t \t – JJN

回答

0

如果地圖是具有getMap()吸氣劑的動作屬性,則不必使用#;在OGNL中getCurrentYear()也變成currentYear

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

應該是足夠了,但請注意,這將是方式更簡單(優雅),如果做服務器端,在

public boolean isValueEqualToCdKey(){ ... } 

方法,用

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

您好,將上述溶液沒有爲我工作。我有getter和setter方法的地圖private Map > map = new LinkedHashMap >();刪除#didnt工作 – JJN

+0

首先,分開測試。把(在s:if/s:else之前)一個s:屬性與年份測試,另一個與關鍵相等測試結合起來,看看哪一個失敗了 –

+0

我加了s:if and else if as said,but does not work < S:如果測試= 「%{映射[currentYear] == NULL}」> \t AA \t美國廣播公司 \t ABCDE – JJN

0

If List> map = new LinkedHashMap>(); 被稱爲jsp like

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