2013-02-20 44 views
1

我需要根據條件檢索jsp中Map <String, String>類型的地圖的值。條件是將映射關鍵字與變量進行比較,如果關鍵字等於變量,則顯示與該關鍵字有關的值。下面是我在做什麼:比較地圖鍵與某些元素,並根據結果顯示其值

<c:if test="${ myMap.key eq myVariable }"> 
<jsp:getvalueof var="testVariable" value = "${ myMap.value }" /> 
</c:if> 

我所希望得到的是,如果myMap.key等於MYVARIABLE,我應該得到有關在「測試」變量鍵的值。

但這個東西不起作用。請有任何想法的人嗎?

感謝提前:)

+0

的[JSTL訪問由鍵映射值]可能重複(http://stackoverflow.com/questions/924451/jstl-access-a-map-value-by-key) – 2013-02-20 12:36:00

+0

沒有在發佈之前,我經歷了這些,但無法找出解決方案。 – 2013-02-20 12:41:25

回答

3

您可以直接訪問地圖,並獲得價值變成了「測試」變量:

<c:set var="test" value="${myMap[myVariable]}"/> 
+0

謝謝。雅,我知道,但我需要設置值的「測試」變量基於條件的關鍵。因此,獲取關鍵字並將其與某些變量進行比較是一個問題。 – 2013-02-20 12:48:10

+1

只是爲了澄清一點,你所說的比較不是一個簡單的「平等」,對吧?因爲如果是這樣,這就是地圖訪問者正在做的事情。 – 2013-02-20 12:53:59

+0

功能要求是,我需要根據密鑰是否等於變量從此映射中獲取值。例如:讓我說我的鑰匙是「美國」,「英國」和「印度」,所以我想比較這些關鍵與一個名爲「國家」的變量,如果它匹配需要顯示的地圖的值是URL爲該國的網站。 – 2013-02-20 12:59:05

0
//use like this in jsp 
<% 
String val; 
for(String key : myMap.keyset()){ 
    if(key.equals(myVariable)){ 
     val = myMap.get(key); 
    } 
} 
%> 
//on js use like this 
var test = '<%=val%>'; 
+0

這應該工作我猜,但我們不能不使用scriptlet嗎? – 2013-02-20 12:50:08

0

因爲,你想從地圖檢索值根據條件,您可以改用三元運算符。試試這個:

<c:set var="testVariable" value='${ myMap.key eq myVariable ? myMap[myVariable] : "defaultValue" }'/> 
+0

感謝您的解決方案。但我想弗朗西斯科提出的建議是解決問題的最簡單和最好的方法。 – 2013-02-20 14:12:27