我遇到一些JSTL没有按预期评估'gt'的问题,有些代码:
<c:choose>
<c:when test="${param.totalPages > pageLinkCount}">
JSP永远不会在阻塞时呈现内容,而是始终呈现阻止内容。关于测试的一些事情是失败的。
我尝试了一个找到here for a similar looking problem的解决方案,其中解决方案包括添加一个声明来告诉JSP / JSTL引擎vars是Longs(它们也适合我)......
<%@ attribute name="currentPage" required="true" type="java.lang.Long" %>
...但我发现了错误:
org.apache.jasper.JasperException: /WEB-INF/jsp/includes/pagination.jsp(4,13) <%@ attribute directive can only be used in a tag file
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:132)
测试是在JSP包括这样包括:
<jsp:include page="../includes/pagination.jsp" >
<jsp:param value="${pages}" name="totalPages"/>
....other params
一些测试值输出到html:
param.TotalPages:171
TotalPages:171(本地JSTL var我尝试分配param.totalPages的值)
当前:64
BeginPage:1
EndPage:171
PageLinkCount:3
答案 0 :(得分:0)
此错误情况通常是拼写错误,小写与大写或类似:
验证这一点,因为JSTL变量名称不区分大小写。
答案 1 :(得分:0)
我改变了
<jsp:include
样式包括
<@include
指令,将params更改为c:set var,现在它似乎正常工作。
因此,我更喜欢使用jsp:include包含页面的样式,似乎params的处理方式并不像我预期的那样,所以我现在仍然坚持使用@ directive style。