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>
这是一个使用 jstl
的 jsp
文件,但是标签 <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}
.
立即使用布尔表达式
<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>
这是一个使用 jstl
的 jsp
文件,但是标签 <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}
.