<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
的{{1}}文件,但标记jstl
存在一些问题。
我声明了两个名为<c:when>
和{{}的变量1}},它非常明显pageCount
,但在使用maxSuggestPage
时,其中的代码块已执行且pageCount > maxSugguestPage
阻止不执行。
答案 0 :(得分:1)
您已将值设置为字符串,而不是数字。这些字符串是lexicographically比较的。
将它们设置为数字。
<c:set var="pageCount" value="${16}" />
<c:set var="maxSugguestPage" value="${7}" />
对具体问题 无关,没有必要将布尔表达式与布尔语句中的固定布尔值进行比较,如${firstDot == true}
。只需使用布尔表达式,如${firstDot}
。