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>
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值