JSTL foreach循环指定项目,开始和结束变量的标签灵活性
问题描述:
为什么当我尝试为灵活性目的指定具有变量的开始和结束标签的值时,它们始终为0(这是第一个索引,因此输出只有1项)。 [见下面的代码]JSTL foreach循环指定项目,开始和结束变量的标签灵活性
<%
int maxEntry = 10;
int pageNumber = Integer.parseInt(request.getParameter("page"));
%>
<c:forEach items="${employees}" var="employee" begin="${maxEntry*(pageNumber-1)}" end="${maxEntry*pageNumber}">
Employee <c:out value="${employees}"/><p>
</c:forEach>
但是当我做这种方式:
<c:forEach items="${employees}" var="employee" begin="0" end="10">
Employee <c:out value="${employees}"/><p>
</c:forEach>
它能正常工作,输出10项。请赐教。在此先感谢〜
答
大声笑我明白了。不知何故,我想如何通过更多的谷歌搜索和阅读手册使其工作:
int pageNumber = pageNumber = Integer.parseInt(request.getParameter("page"));;
int maxEntry = 10;
// setAttribute to be read by JSTL
pageContext.setAttribute("maxEntry", maxEntry);
pageContext.setAttribute("pageNumber", pageNumber);
P.S. - 我也认为这是一个坏方法。我了解到你也可以这样做:
<c:set var="maxEntry" value="${10}" />
<c:choose>
<c:when test="${empty param.page}">
<c:set var="pageNumber" value="${1}" />
</c:when>
<c:otherwise>
<c:set var="pageNumber" value="${param.page}" />
</c:otherwise>
</c:choose>