复杂的jstl访问HashMap对象.
做项目里遇到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> <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"> ${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}表达意思就根据动态传入的外部引用键,获取
对应的名称.
思路来源于