做java web項目有時候會需要在頁面使用嵌套<c:forEach>遍歷一個List,但是嵌套很容易忽略一些東西導致出錯
后台代碼:
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); for (Map<String, Object> map : list) { List<Map<String, Object>> wordsList = new ArrayList<Map<String, Object>>(); Map<String, Object> tmap = new HashMap<String, Object>(); tmap.put("author", "author"); tmap.put("sign", "sign"); wordsList.add(tmap); map.put("wordsList", wordsList); } model.addAttribute("list", list);
這個時候list里面的每一個元素還包含一個wordsList,到頁面遍歷就需要用到嵌套<c:forEach>
JSP頁面代碼:
<c:forEach items="${list }" var="cl" varStatus="i"> <c:forEach items="${cl.wordsList}" varStatus="i" var="wl"> <li>${wl.author }</li> <li>${wl.sign }</li> </c:forEach> </c:forEach>
在寫內層循環的時候很容易犯錯,寫成
<c:forEach items="${wordsList}" varStatus="i" var="wl"> <li>${wl.author }</li> <li>${wl.sign }</li> </c:forEach>
內層循環的items屬性需要帶上上層循環的var屬性值,必須寫成
<c:forEach items="${cl.wordsList}" varStatus="i" var="wl"> <li>${wl.author }</li> <li>${wl.sign }</li> </c:forEach>
