我正在尝试从我的朋友列表中检索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>
有没有办法可以从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>
答案 0 :(得分:5)
你使它变得比必要更困难。以下是比你更好的替代解决方案IMO,从最差到最好的解决方案:
varStatus="loopStatus"
的{{1}}属性,该属性允许使用c:forEach
知道循环内迭代的索引。这样可以删除${loopStatus.index}
属性。count
end="19"
属性
在控制器中准备列表(甚至在检索用户时在SQL查询中),以确保它最多只有20个元素:
c:forEach
答案 1 :(得分:1)
问题似乎与你的第一行有关。您尚未终止c:set标记。