2015-09-16 68 views
0

我有下面的代碼在我的jspJSTL C:的foreach能步驟是0.5

<c:forEach var="starCounter" begin="1" end="5" step="1"> 
     <c:if test="${starCounter le averageRating}"> 
       <i class="glyphicon glyphicon-star"></i> 
     </c:if> 
     <c:if test="${starCounter gt averageRating}"> 
       <i class="glyphicon glyphicon-star-empty"></i> 
     </c:if> 
    </c:forEach> 

我想1步改爲0.5,但未能如願當我改變的步驟0.5造成的,我碰到下面的錯誤,我的JSP不編譯

Caused by: java.lang.NumberFormatException: For input string: "0.5" 

正如this link提到的,好像一步必須> = 1。

有沒有辦法做我想要達到什麼樣的?

感謝您的幫助。

回答

0

忘了補充我最後的答案。所以在這裏。我剛剛添加了另一個變量starHalfStepCounter並在其中播放。

更新的代碼是

<c:forEach var="starCounter" begin="1" end="5"> 
     <c:set var="starHalfStepCounter" value="${starCounter - 0.5}" />           
     <c:choose> 
      <c:when test="${starCounter le averageRating}"> 
       <i class="glyphicon glyphicon-star"></i> 
      </c:when>          
      <c:when test="${starCounter gt averageRating}">            
       <c:choose> 
        <c:when test="${starHalfStepCounter le averageRating}">              
         <i class="glyphicon glyphicon-star half"></i> 
        </c:when> 
        <c:otherwise> 
         <i class="glyphicon glyphicon-star-empty"></i> 
        </c:otherwise>            
       </c:choose> 
      </c:when> 
     </c:choose> 
    </c:forEach> 
0

正如docforeach提到,stepint,當你需要它不能採取雙重/浮點值,像0.5。所以IMO不可能的,

+0

我也是同樣的假設下。將嘗試以其他方式做到這一點。感謝您的幫助 –

+0

@BalwinderSingh歡迎 –

0

您可以通過使用JSP scriplets實現這一目標:)

<% 
     for (double i = 0; i <= 5; i+=0.5) { 
      if (i < averageRating) { 
    %> 
      <i class="glyphicon glyphicon-star"></i> 
    <% 
      } else { 
    %> 
      <i class="glyphicon glyphicon-star-empty"></i> 
    <% 
      } 
     } 
    %>