2012-09-03 23 views
5

Tôi có HashMap này:EL nhận được giá trị của một HashMap bởi Integer chính

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"); 

Mục tiêu của tôi trong JSP là in ví dụ: $ {odometerMap [2]} (kết quả là chuỗi rỗng):

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

Nếu tôi chỉ in $ {} odometerMap tôi nhận được đầy đủ bản đồ:

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

Làm thế nào tôi có thể in chỉ là một yếu tố của sự lựa chọn của tôi? Ví dụ: 2?

Cảm ơn bạn

+0

Is * odometerMap * đối tượng (trang, yêu cầu, phiên, ứng dụng) có phạm vi? – adatapost

Trả lời

11

Trong EL, con số này được coi là Long. Nó đang tìm kiếm một khóa Long. Nó sẽ hoạt động nếu bạn sử dụng Long thay vì Integer làm khóa bản đồ.

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

Một thay thế có thể được sử dụng một String là chìa khóa

Map<String, String> odometerMap; 

.. và:

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

Tuy nhiên, nó là tốt hơn để sử dụng một List của Strings từ của bạn khóa không có ý nghĩa rõ ràng:

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

.. và:

<c:out value="${odometers[2]}"/> 
Các vấn đề liên quan