<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>
这是一个使用
jsp
的jstl
文件,但是标签<c:when>
存在一些问题。我声明了两个名为pageCount
和maxSuggestPage
的变量,这很明显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}
一样立即使用布尔表达式。