2013-08-31 50 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