JSTL突破循环

Sky*_*Sky 1 loops jstl

我正试图从我的朋友列表中检索20条记录,其名称以"J"开头.但是,我意识到JSTL没有中断.所以我尝试使用计数来跟踪记录.我遇到错误'PWC6031:Unterminated <c:set tag'

<c:set var="count" value="0" scope="page">
    <c:forEach items="${friendsList}" var="user">
        <c:if test="${count < 20}">
            <c:set var="string1" value="${fn:substring(user.name, 0, 1)}" />
            <c:if test="${fn:startsWith(string1,'J')}">
                <tr>
                <td><c:out value="${user.name}" /></td>
                <td><img src='https://graph.facebook.com/<c:out value="${user.id}"/>/picture' />
                </td>
            </tr>
            </c:if>
        </c:if>
        <c:set var="count" value="${count + 1}" scope="page"/>
    </c:forEach>
Run Code Online (Sandbox Code Playgroud)

有没有办法可以从count变量中检索值?如果没有,是否有另一种方法可以突破循环以达到我想要的效果?谢谢.

在解决了我遇到的错误之后,我设法利用count变量来列出我想要的内容.我在原始编码中混淆了"计数"编码的顺序.这就是我现在所拥有的,正在努力,感谢大家的帮助!

<c:set var="count" value="0" scope="page" />
    <c:forEach items="${friendsList}" var="user">
        <c:if test="${count < 20}">
            <c:set var="string1" value="${fn:substring(user.name, 0, 1)}" />
            <c:if test="${fn:startsWith(string1,'J')}">
                <tr>
                    <td><c:out value="${user.name}" /></td>
                    <td><img src='https://graph.facebook.com/<c:out value="${user.id}"/>/picture' /></td>
                </tr>
                <c:set var="count" value="${count + 1}" scope="page" />
            </c:if>
        </c:if>
    </c:forEach>
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 5

你做得比必要困难.以下是比你更好的替代解决方案IMO,从最差到最好的解决方案:

  1. 使用其varStatus="loopStatus"属性c:forEach可以使用知道循环内迭代的索引${loopStatus.index}.这允许删除您的count属性.
  2. 使用的end="19"属性c:forEach
  3. 准备控制器中的列表(甚至在检索用户时在SQL查询中)以确保它最多只有20个元素:

    users = users.subList(0, Math.min(users.size(), 20));
    
    Run Code Online (Sandbox Code Playgroud)