代码之家  ›  专栏  ›  技术社区  ›  Chloe

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

  •  0
  • Chloe  · 技术社区  · 6 年前

    我有以下内容:

        <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.最小值(java.lang.Long文件, java.lang.Integer)

    如果我试着手动将它们投射到 (int)

    apache.jasper网站.JasperException:/WEB-INF/jsp/主页.jsp(行:[528],列:[2])[${数学.min((int)(page+5),(int)pages}]包含无效表达式:[javax.el.ELException:无法分析表达式[${数学.min((int)(第+5页),(int)页)}]]

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

    但是Eclipse无法解析它。

    1 回复  |  直到 6 年前
        1
  •  1
  •   prasad_    6 年前

    试着使用 pageNo 变量名而不是 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


    编辑 :jsp2.0规范中的注释:“变量名 页码 类型 java.lang.Object 隐式对象