複雜的jstl訪問HashMap對象.

來源:互聯網
上載者:User

做項目裡遇到jstl訪問HashMap裡的對象,網路上一般的常式無法滿足.

網路上一般是

<%
Map<String,String> map2 = new HashMap();
map2.put("a","hello world");
map2.put("b","this is map");
request.setAttribute("map2",map2);
%>
<br>

索引值對遍曆<br>
<c:forEach var="item" items="${map2}">
${item.key} > ${item.value} <br>
</c:forEach>

這上面都是比較簡單的使用.

的代碼大致如下

<%

..........

List li = call.execProcedure(obj, SendUpdateFile.class);
List<SendUpdateFile> list = new ArrayList<SendUpdateFile>();
    // 遍曆集合
    for (int i = 0; i < li.size(); i++) {
        SendUpdateFile ui = (SendUpdateFile) li.get(i);
        list.add(ui);
        //System.out.println(ui.toString());
    }
    Pagination p = new Pagination();
    p.setIndex(tmpcurrPage);
    p.setPageSize(tmppageSize);
    p.setTotle(call.getTotle());
    p.setData(list);
    request.setAttribute("upFiles", p);

........

HashMap<String, DealerBaseINF> list1 =  new HashMap<String, DealerBaseINF>();
    // 遍曆集合
    for (int i = 0; i < li1.size(); i++) {
        DealerBaseINF ui = (DealerBaseINF) li1.get(i);
        list1.put("" + ui.getId(), ui);
    }
    request.setAttribute("dealers", list1);

%>

........

<td size="130px" align="left"><select name="delear" id="delear"
            style="width: 120px;">
            <option>請選擇上遊客戶</option>            
            <c:forEach items="${dealers}" var="item"> 
                <option value="${item.key}">${item.value.name}</option>
            </c:forEach>
        </select>&nbsp;<font color="red">*</font>
</td>

.........

<c:forEach items="${upFiles.data}" var="li">
        <tr>
            <td align="center" class="tab_r1"><%=++i%></td>
            <td style="" align="center" width="10%" class="tab_r1"><input
                type="checkbox" id="rowId" name="rowId" value="${li.id}" /></td>
            <td align="center" class="tab_r1"> 
            <c:choose>
                   <c:when test="${li.delear > 0}">
                    ${dealers[li.delear].name}
                   </c:when>
                   <c:otherwise>
                                 無效上遊客戶
                   </c:otherwise>
            </c:choose>
            <td align="left" class="tab_r1">&nbsp;${li.fileName }</td>
            <td align="center" class="tab_r1">${li.ftpUpTime }</td>
            <td align="center" class="tab_r1">${li.disFlag }</td>
            <td align="center" class="tab_r1">${li.upOptor }</td>
        </tr>
    </c:forEach>

下面重點說

1:  <c:forEach items="${dealers}" var="item"> 
                <option value="${item.key}">${item.value.name}</option>

2: ${dealers[li.delear].name}

item.value返回的 DealerBaseINF 對象,  .name是DealerBaseINF的一個屬性.

delear在資料執行個體中是DealerBaseINF主鍵的FK 外部應用鍵. 

${dealers[li.delear].name}表達意思就根據動態傳入的外部參考鍵,擷取

對應的名稱.

思路來源於

如果知道key就直接寫${map.key}如果key是一個變數就寫成${map[key]}例如:map.put("name", "zhang san");String tempVal = "name";${map.name}${map[tempVal]}

由於[號內的值可以動態變化]所以就容易獲得.

由於對jstl不是掌握太熟悉 其中我 測試了 ${dealers.$li.dealer.name},
${dealers[$li.dealer].name},  ${dealers["$li.dealer"].name},均
不對,當然有些直接是錯誤的寫法,反正測試,測試,終於些正確了.

以後對訪問複雜jstl有很大協助.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.