2013-12-15 181 views
1

我是Spring MVC/JSP世界的新手。對不起,如果下面的問題很明顯,將地圖傳遞給JSP

我有一個地圖Map<BigInteger, String> reports = new HashMap<>();需要從控制器傳遞給JSP。 圖的內容可能會是這樣

reports.put(new BigInteger("101"), "type1"); 
reports.put(new BigInteger("102"), "type2"); 
reports.put(new BigInteger("103"), "type3"); 

從Spring MVC的控制器我下面通過這個地圖:

ModelAndView mav = new ModelAndView("view"); 
mav.addObject("reports", reports); 

但是當我試圖訪問這個在view.jsp的下面scriplet: -

<% String a1 = request.getAttribute("reports").get(new BigInteger("101")); %> 

但是這給了我以下異常:

PWC6199: Generated servlet error: 
cannot find symbol 
    symbol: method get(java.math.BigInteger) 
    location: class java.lang.Object 

相同的異常,如果我嘗試使用如下表達式來獲取值: -

<%= request.getAttribute("reports").get(new BigInteger("101")) %> 

任何幫助將不勝感激。的ObjectMap

回答

2

request.getAttribute("reports")返回引用,你將不得不

你最好去JSTL,以避免在視圖模板Java代碼

2

由於Jigar喬希說,你需要以便訪問JSP中的地圖

<%= ((Map<BigInteger, String>) request.getAttribute("reports")).get(new BigInteger("101")) %> 

然而,也如上所述,使用EL表達式會更清潔。由於地圖以BigInteger爲鍵值,因此您需要將密鑰轉換爲StringLong,因此它們是accessible to EL

隨着String鍵:

reports.put("101", "type1"); 

在JSP可以使用:

<c:out value="${reports['101']}"/> 

或用Long鍵:

reports.put(101L, "type1"); 

你可以使用:

<c:out value="${reports[101]}"/>