2013-08-31 53 views
1

我想从我的朋友列表中检索20条记录,其名称以'J'开头。但是,我意识到JSTL没有中断。所以我试图用计数来记录这些记录。我打成了错误“PWC6031:未终止< C:设置标签”JSTL突破

<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> 

回答

5

你让事情变得更加困难。这里有可供选择的解决方案,都是比你的好,国际海事组织,从最坏到最好的一个:

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

    users = users.subList(0, Math.min(users.size(), 20)); 
    
+0

感谢您的有用信息! – Sky

1

这个问题似乎是与你的第一道防线。您尚未终止c:set标记。

+0

我一定忽略了它,谢谢。仍然是使用jstl的新功能。 – Sky