2012-10-29 60 views
1

我加載地圖值寫入ServletContext應用/服務器獲得一個地圖的價值在Struts2 JSP

HashMap<String, List<String>> cfsUfsMap = new HashMap<String, List<String>>(); 
//some operations 
application.setAttribute("UDM_UFS_CFS_MAP", cfsUfsMap); //application = ServletContext 

我需要直接在JSP頁面中使用該地圖,爲此我開始時做到了這一點

<s:set name="udm_cfs_ufs_map" value="#application.UDM_UFS_CFS_MAP" /> 
<table class="first" width="100%" border="0" cellpadding="0" id="sups_assignedservices_info_table"> 
<tr> 
    <th width="30%">Assigned service name </th> 
    <th width="15%">CFS Code </th> 
    <th width="15%">Status </th> 
    <th width="20%">Date </th> 
    <th width="20%">UDM </th> 
</tr> 
<s:iterator value="#sups_services.services"> 
    <s:set name="ufs_list" value="#udm_cfs_ufs_map.['top.code']" /> 
    <tr>     
     <td class="light"><s:property value="top.name"/> </td> 
     <td class="light"><s:property value="top.code"/> </td> 
     <td class="light"><s:property value="top.status"/> </td> 
     <td class="light"><s:property value="top.date"/> </td> 
     <td class="light"><s:property value="#udm_cfs_ufs_map.size()" /> - <s:property value="#ufs_list.size()" /></td> 
    </tr> 
</s:iterator> 

正如你看到的,我試圖讓使用它的關鍵是top.code 但是我得到原始的地圖大小,但不會從地圖中的值(名單)列表大小基於密鑰。

任何想法什麼是缺失/出錯

回答

1

完成。

我自己解決了。我發佈我的錯誤和正確的解決方案。這樣下來的線可能是有用的人

訪問參數servletContext屬性

<s:set name="udm_cfs_ufs_map" value="#application.UDM_UFS_CFS_MAP" /> 

基於密鑰導入從地圖內容

<s:iterator value="#sups_services.services"> 
<s:set name="ufs_list" value="#udm_cfs_ufs_map[top.code]" /> 
<tr> 
    <td class="light"><s:property value="top.name" /></td> 
    <td class="light"><s:property value="top.code" /></td> 
    <td class="light"><s:property value="top.status" /> 
    </td> 
    <td class="light"><s:property value="top.date" /></td> 
    <td class="light"><s:iterator value="ufs_list"> 
      <s:property /> 
      <br /> 
     </s:iterator></td> 
</tr> 

+1

我寧願看到迭代器標籤中的var;在工作時使用'top',對任何可能影響堆棧頂部實際情況的更改都非常敏感。 –