在学习《JSTL In Action》时试验了其中第109页上的例程:
<%@ taglib prefix="c" uri=" [url]http://java.sun.com/jstl/core[/url]" %>
<c:set var="totalCount" scope="session" value="100"></c:set>
<c:set var="perPage" scope="session" value="20" ></c:set>
<c:forEach var="boundaryStart" begin="0" end="${totalCount - 1}"
 step="${perPage}">
 <a href="?start=<c:out value="${boundaryStart}"/>"> [ <c:out
   value="${boundaryStart}" /> - <c:out
   value="${boundaryStart + perPage - 1}" /> ] </a>
</c:forEach>
<c:forEach var="current" varStatus="status" begin="${param.start}"
 end="${param.start + perPage - 1}">
 <c:if test="${status.first}">
  <ul>
 </c:if>
 <li>
  <c:out value="${current}" />
 </li>
 <c:if test="${status.last}">
  </ul>
 </c:if>
</c:forEach>
发布后浏览时报下面的错误:
org.apache.jasper.JasperException: /jsp/pages/MyJsp.jsp(4,0) According to TLD or attribute directive in tag file, attribute end does not accept any expressions
。。。。
将第一行换成下面的代码问题即可解决:
<%@ taglib prefix="c" uri=" [url]http://java.sun.com/jstl/core_rt[/url]" %>
原因是JSTL的版本问题:
jstl的1.0的版本分为两个tld,以core为例,core.tld和core_rt.tld,后者支持表达式,jstl 1.1的core.tld就都支持了
得益于下面的帮助:
本人试着使用JSTL1.1 发现上面的程序仍然报相同的错误. 必须将第一行换成:
<%@ taglib prefix="c" uri=" [url]http://java.sun.com/jstl/core_rt[/url]" %>
才正确.