2012-09-03 56 views
5

得到一個HashMap的值我有此HashMap:EL通過整數鍵

Map<Integer, String> odometerMap = new LinkedHashMap<Integer, String>(); 
    odometerMap.put(0, getLocaleForKey("drop-down.any")); 
    odometerMap.put(1, "< 1000"); 
    odometerMap.put(2, "1000 - 5000"); 
    odometerMap.put(3, "5000 - 10000"); 
    odometerMap.put(4, "10000 - 20000"); 
    odometerMap.put(5, "20000 - 30000"); 
    odometerMap.put(6, "30000 - 40000"); 
    odometerMap.put(7, "40000 - 60000"); 
    odometerMap.put(8, "60000 - 80000"); 
    odometerMap.put(9, "> 80000"); 

我在JSP的目標是打印例如$ {odometerMap [2]}(結果爲空字符串):

<c:out value="${odometerMap[2]}"/> 

如果我只打印$ {} odometerMap我得到的完整地圖:

{0=Any, 1=< 1000, 2=1000 - 5000, 3=5000 - 10000, 4=10000 - 20000, 5=20000 - 30000, 6=30000 - 40000, 7=40000 - 60000, 8=60000 - 80000, 9=> 80000} 

如何打印只是我選擇的元素?例如:2?

謝謝

+0

是* odometerMap *作用域(頁面,請求,會話,應用程序)對象嗎? – adatapost

回答

11

在EL,數字被視爲Long。它正在尋找一個Long鑰匙。如果您使用Long而不是Integer作爲映射關鍵字,它將起作用。

Map<Long, String> odometerMap = new LinkedHashMap<Long, String>(); 
odometerMap.put(0L, getLocaleForKey("drop-down.any")); 
odometerMap.put(1L, "< 1000"); 
// ... 
5

另一種可以使用String作爲關鍵

Map<String, String> odometerMap; 

..和:

<c:out value="${odometerMap['2']}"/> 

但是,最好還是使用Strings一個List因爲你鍵沒有任何明確的含義:

List<String> odometers = new ArrayList<String>(); 
odometers.add(getLocaleForKey("drop-down.any")); 
// etc 

..和:

<c:out value="${odometers[2]}"/>