<c:set var="pageCount" value="16"></c:set>
<c:set var="maxSugguestPage" value="7"></c:set>
<c:choose>
    <c:when test="${pageCount < maxSugguestPage}"> <!-- why this block executed? -->
        <c:forEach begin="1" end="${pageCount}" var="index">
            <li><a href="#">${index }</a></li>
        </c:forEach>
    </c:when>
    <c:otherwise>
        <c:set var="firstDot" value="true"></c:set>
        <c:forEach begin="1" end="${pageCount - 1}" var="index">
        <c:choose>
            <c:when test="${index > maxSugguestPage and firstDot == true}">
                <li><a href="#">..</a></li>
                <c:set var="firstDot" value="false"></c:set>
            </c:when>
            <c:otherwise>
                <c:if test="${firstDot == true}">
                    <li><a href="#">${index }</a></li>
                </c:if>
            </c:otherwise>
        </c:choose>
        </c:forEach>
        <li><a href="#">${pageCount }</a></li>
    </c:otherwise>
</c:choose>


这是一个使用jspjstl文件,但是标签<c:when>存在一些问题。我声明了两个名为pageCountmaxSuggestPage的变量,这很明显pageCount > maxSugguestPage,但是使用<c:when test="${pageCount < maxSuggestPage}"> ,其中的代码块将执行,而<c:otherwise>块则不会。

最佳答案

您已将值设置为字符串,而不是数字。比较那些字符串lexicographically

而是将它们设置为数字。

<c:set var="pageCount" value="${16}" />
<c:set var="maxSugguestPage" value="${7}" />




与具体问题无关,无需在${firstDot == true}这样的布尔语句中将布尔表达式与固定布尔值进行比较。就像${firstDot}一样立即使用布尔表达式。

08-16 08:50