JSTL用 <c:forEach> 遍歷對象集合,而對象內含有集合屬性


JSTL用 <c:forEach> 遍歷對象集合,而對象內含有集合屬性

通過jstl遍歷一個自定義的實體類集合,而這個實體類的屬性中還有一個集合屬性。
比如以下的例子:
有多個學生,每個學生都有多個盆友

// 學生類
public class Student{
    private Integer sid;
    private String sname;
    private List<Friend> friendList;
}
// 盆友類
public class Friend{
    private Integer fid;
    private String fname;
}

在jsp頁面中,通過jstl展示學生列表和每個學生的盆友列表

解決

前提

// 前提:引入jstl標簽
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

寫法一

后端代碼

①獲取所有的學生集合StudentList,只要學生的id和name即可。
②獲取所有的盆友集合FriendList,只要盆友的id和name即可。
③將以上的2個集合設置到session中。

前端代碼

// 前提:引入jstl標簽
<c:forEach items="${StudentList}" var="student">
    <span>學生 <span style="color: red">${student.name }</span> 的盆友:</span>
    <br />
    <c:forEach items="${FriendList}" var="friend">
        <c:if test="${student.id == friend.moduleId}">
            &nbsp;&nbsp;&nbsp;&nbsp;
            <span><span style="color: green">${friend.name }</span></span>
            <br />
        </c:if>
    </c:forEach>
    <hr/>
</c:forEach>

效果如下:

 

 

寫法二

后端代碼

①獲取所有的學生集合StudentList,並且設置好每個學生的friendList屬性 。
③將以上的StudentList集合設置到session中。
前端代碼

 <c:forEach items="${StudentList}" var="student" varStatus="student_vs">
  <tr>
      <td>${student.name}</td>
      <br>
      <c:set value="${student.friendList}" var="friend_data"/>
      <c:forEach items="#{friend_data}" var="friend">
          <td>${friend.name}</td>&nbsp;&nbsp;
      </c:forEach>
      <td>${student.id}</td>
      <td>${student_vs.index+1}</td>
  </tr>
  <hr style="border:1px dotted #000000" />
</c:forEach>

寫法三

后端代碼

①獲取所有的學生集合StudentList,並且設置好每個學生的friendList屬性 。
③將以上的StudentList集合設置到session中。

前端代碼

<c:forEach items="${StudentList}" var="student" varStatus="student_vs">
  <tr>
      <td>${student.name}</td>
      <br>
      <c:forEach items="#{student.friendList}" var="friend">
          <td>${friend.name}</td>&nbsp;&nbsp;
      </c:forEach>
  </tr>
  <hr style="border:1px dotted #000000" />
</c:forEach>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM