【发布时间】:2015-03-26 07:17:34
【问题描述】:
我发现在 jsp 上迭代多级集合时遇到困难。
@Entity
@Table(name = "Establishment")
public class Establishment extends Basis<Long> {
@Column(name = "code")
private Long code; // will be used for link to the entity if the name will be updated
@Column(nullable = false)
private String name;
private String establishmentType;
@ManyToOne(optional = true)
private Establishment establishment;
@Column(name = "establishment_id", insertable = false, updatable = false)
private Long establishmentId;
@OneToMany(mappedBy = "establishment", orphanRemoval = true, cascade = CascadeType.ALL)
private List<Establishment> establishments = new ArrayList<>();
//getters & setters
}
jsp代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page session="true" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="myTags" %>
<myTags:hierarchy list="${establishmentList}"/>
标签文件:
<%@ attribute name="list" required="true" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="myTags" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:if test="${!empty list}">
<ul>
<c:forEach var="entity" items="${list}">
<li><c:out value="${entity.name}"/></li>
<%--${fn:length(e.establishments)}--%>
<myTags:hierarchy list="${entity.establishments}"/>
</c:forEach>
</ul>
</c:if>
如果我在<c:forEach var="entity" items="${list}"> 中使用“列表”,比如here,我不能使用${entity.name},如果使用<c:forEach var="entity" items="${establishmentList}">,我会递归调用第一个元素。那么,我应该如何编辑标签文件以使其工作?
【问题讨论】:
标签: java jsp collections multi-level