我使用以下数据结构,以在Servlet控制器JDBC结果存储在使用JSTL一个JSP视图中显示之前。更简洁的方式来迭代该树形图数据结构中JSTL
TreeMap
- TreeMap
- String[]
每行返回四列数据。
"CATEGORY","OSDIRECTORY","FILENAME","DESCRIPTION"
"CATEGORY","OSDIRECTORY","FILENAME","DESCRIPTION"
"CATEGORY","OSDIRECTORY","FILENAME","DESCRIPTION"
etc.
的目标是在数据结构的结果保存为
Category
- FILENAME
- OSDIRECTORY
- DESCRIPTION
而作为
Category A
Hyperlink
Hyperlink
Hyperlink
Category B
Hyperlink
Hyperlink
etc.
相关的Servlet控制器代码显示在查看最终的结果摘录
...
TreeMap treeMap = new TreeMap();
rs = stmt.executeQuery(query);
// Gather raw data
while(rs.next()){
if(!treeMap.containsKey(rs.getString("CATEGORY"))){
treeMap.put(rs.getString("CATEGORY"), new TreeMap());
}
String[] tmp = { rs.getString("OSDIRECTORY"), rs.getString("DESCRIPTION") };
((TreeMap)treeMap.get(rs.getString("CATEGORY"))).put(rs.getString("FILENAME"), tmp);
}
request.setAttribute("filemap", treeMap);
RequestDispatcher rd = request.getRequestDispatcher(VIEW_URL);
rd.forward(request, response);
...
相关的JSP查看JSTL片段
<c:forEach var="f" items="${filemap}">
<h1><c:out value="${f.key}"/></h1>
<c:forEach var="g" items="${filemap[f.key]}">
<a href="TBD">
<c:out value="${filemap[f.key][g.key][0]}"/>
<c:out value="${filemap[f.key][g.key][1]}"/>
</a>
</c:forEach>
</c:forEach>
我想知道的有表达一些JSTL表达式的更简洁的方式。
例如$ {filemap [f.key] [g.key] [0]}似乎只是太冗长了我。
仅供参考:我已经在下面发布了一个更简单的方法。 – JTP 2013-05-01 17:24:46