JSTL foreach循环指定项目,开始和结束标记与变量的灵活性

时间:2016-07-25 02:41:51

标签: loops foreach jstl items flexibility

为什么当我尝试为变量指定带有变量的开始和结束标记的值时,它们总是得到0(这是第一个索引,因此只输出1个条目)。 [见下面的代码]

<%
    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个条目。请赐教。提前谢谢〜

1 个答案:

答案 0 :(得分:0)

大声笑我明白了。不知何故,我想通过一些谷歌搜索和阅读手册,如何使它工作:

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>