如何在JSP中编写此JSTL for循环?找不到明确的方法:类java.lang.Math.min(Long,Integer)

时间:2018-11-06 21:45:46

标签: java jsp spring-boot jstl

我有以下内容:

    <c:forEach var="i" begin="${Math.max(1,page-5)}" end="${Math.min(page+5,pages)}">
        <a class="btn btn-primary" href="?page=${i}">${i+1}</a>
    </c:forEach>

出现错误

  

javax.el.MethodNotFoundException:无法找到明确的方法:类java.lang.Math.min(java.lang.Long,java.lang.Integer)

如果我尝试手动将其强制转换为(int),则会给出不同的错误!

  

org.apache.jasper.JasperException:/WEB-INF/jsp/home.jsp(行:[528],列:[2])[$ {Math.min((int)(page + 5), (int)页)}]包含无效的表达式:[javax.el.E​​LException:无法解析表达式[$ {Math.min((int)(page + 5),(int)pages)]]]]

我也尝试过

<% for (int i=Math.max(1,${page}-5); i<Math.min(${page}+5,${pages}); i++) { %>

但是Eclipse无法解析它。

1 个答案:

答案 0 :(得分:1)

尝试使用pageNo变量名代替page。变量名称page就是问题所在。例如,以下作品:

<c:set var="pageNo" value="3"/>
<c:set var="pageCount" value="6"/>
<c:forEach var="i" begin="${Math.max(1, pageNo-5)}" end="${Math.min(pageNo+5, pageCount)}">
        <a class="btn btn-primary" href="?pageNo=${i}">${i+1}</a>
</c:forEach>


输出将每个数字显示为链接(带有HTML <a/>标签):2 3 4 5 6 7


编辑:来自JSP 2.0规范的注释:“变量名page的类型为java.lang.Object,描述为:该页面实现的实例类处理当前请求页面范围”。它是JSP页面中可用的隐式对象之一。