jstl <c:when> 标记错误结果

jstl <c:when> tag wrong result

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

这是一个使用 jstljsp 文件,但是标签 <c:when> 有一些问题。
我声明了两个名为 pageCount 的变量和maxSuggestPage,很明显pageCount > maxSugguestPage,但是当使用<c:when test="${pageCount < maxSuggestPage}">时,里面的代码块执行了,而<c:otherwise>块没有。

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

改为将它们设置为数字。

<c:set var="pageCount" value="" />
<c:set var="maxSugguestPage" value="" />

与具体问题无关,没有必要像这样${firstDot == true}那样在布尔语句中将布尔表达式与固定布尔值进行比较。像这样 ${firstDot}.

立即使用布尔表达式