我在jsp中有以下代码
<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时,我得到以下错误并且我的jsp没有编译
Caused by: java.lang.NumberFormatException: For input string: "0.5"
如this link中所述,步骤似乎必须是&gt; = 1.
有没有办法做我想达到的目标?
感谢您的帮助。
答案 0 :(得分:0)
如foreach
step
中提到的那样,int
为0.5
,并且根据需要,它不能像TableView
那样采用双/浮点值。所以IMO不可能,
答案 1 :(得分: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>
<%
}
}
%>
答案 2 :(得分: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>
答案 3 :(得分:0)
遇到了同样的问题,提出了一个简单的解决方案,代码显示了创建选择元素(从12到36)的选项,步长为.25:
<select>
<c:set value=".25" var="doubleStep" />
<c:forEach begin="${12/doubleStep}" end="${36/doubleStep}" var="step">
<option value="${step * doubleStep}">${step * doubleStep}</option>
</c:forEach>
</select>
效果很好!