目录
问题解决前提写法一后端代码前端代码
写法二后端代码前端代码
写法三后端代码前端代码
问题
通过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展示学生列表和每个学生的盆友列表
解决
前提
<%@taglib prefix
="c" uri
="http://java.sun.com/jsp/jstl/core"%>
写法一
后端代码
①获取所有的学生集合StudentList,只要学生的id和name即可。 ②获取所有的盆友集合FriendList,只要盆友的id和name即可。 ③将以上的2个集合设置到session中。
前端代码
<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}">
 
; 
; 
; 
;
<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
> 
; 
;
</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
> 
; 
;
</c
:forEach
>
</tr
>
<hr style
="border:1px dotted #000000" />
</c
:forEach
>