JSTL을 사용하여 JSP보기에 표시하기 전에 다음 데이터 구조를 사용하여 Servlet 컨트롤러에 JDBC 결과를 저장합니다.JSTL에서이 트리 맵 데이터 구조를 반복하는보다 간결한 방법
TreeMap
- TreeMap
- String[]
행당 4 개의 데이터 열이 반환됩니다.
"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.
관련 서블릿 컨트롤러 코드로보기 최종 결과를 표시하는 코드 조각입니다
...
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]}은 너무 지나치게 길어 보입니다.
FYI : 아래에서 좀 더 간단한 방법을 게시했습니다. – JTP