2017-02-13 80 views
0

我遇到問題。我嘗試了每種在Stackoverflow上找到的解決方案。 我有這個代碼的Java部分:從JSP頁面的HashMap中檢索值

Map<String, ArchitetturaUnitaModel> map = new HashMap<String, ArchitetturaUnitaModel>(); 
     if(!CollectionUtils.isEmpty(searchPageData.getResults())){ 
      for(ProductData result:searchPageData.getResults()){ 
       if(result instanceof DocumentoData){ 
        String unitaName = ((DocumentoData) result).getUnita(); 
        ArchitetturaUnitaModel unita = fondoFacade.getUnitaByNameUnita(unitaName); 
        if(!map.containsKey(result.getCode())){ 
         map.put(result.getCode(), unita); 
        } 

       } 

      } 
     } 

     model.addAttribute("map", map); 

在JSP頁面中我的代碼,在那裏我嘗試檢索從地圖的一些數據這一部分,通過鍵值:

<c:set value="${map}" var="map"/> 



<c:forEach items="${searchPageData.results}" var="product" varStatus="status"> 
    <c:set value="${product.code}" var="pcode"/> 
    <c:set value="${map.get(pcode)}" var="unita"/> 
    <b><spring:theme code="text.titolounita" />: </b><c:out value="${unita.nome}"/> <br> 
    <b><spring:theme code="text.documento" />: </b>${product.name} <br> 
    <b><spring:theme code="text.lineaferroviaria" />: </b><c:out value="${unita.lineaFerroviaria}"/> 
</c:forEach> 

但我無法從價值unita獲得任何東西。 如果我打印地圖可變我獲得此:

{123123123 = ArchitetturaUnitaModel(8796158591118)}

我怎麼也得寫採取從地圖的價值?

+0

你可以解釋只是一個位java代碼,這有點含糊。一個[mcve]可以提供幫助,輸入/輸出 – AxelH

+0

我只需將一個帶有{key,value}的映射傳遞給JSP頁面,其中key是產品代碼,值是與產品相關的Object(稱爲ArchitetturaModel)。 – sharkbait

回答

1

實在是沒有必要指定地圖的變量同名變量

我相信你可以訪問只使用$映射值{地圖[關鍵]}。

你確定建築....有名字getNome()和getLine ...()的getter嗎?

什麼是錯誤?如果沒有,也許變量只是空

對不起...,名字只是太長

0

我解決這樣這個問題:

<c:set value="${mappa}" var="mappa"/> 
<c:set value="${product.code}" var="pcode"/> 

<b><spring:theme code="text.titolounita" />: </b><c:out value="${mappa[pcode].name}"/> <br> 
<b><spring:theme code="text.documento" />: </b>${product.name} <br> 
<b><spring:theme code="text.lineaferroviaria" />: </b><c:out value="${mappa[pcode].lineaFerroviaria}"/>