java - 如何在 JSP 中编写这个 JSTL for 循环?无法找到明确的方法:class java.lang.Math.min(Long, Integer)
问题描述
我有以下内容:
<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) pages)}] 包含无效的表达式:[javax.el.ELException: 无法解析表达式 [${Math.min((int)(page+5),(int)pages)}]]
我也试过
<% for (int i=Math.max(1,${page}-5); i<Math.min(${page}+5,${pages}); i++) { %>
但是 Eclipse 无法解析它。
解决方案
尝试使用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 页面中可用的隐式对象之一。
推荐阅读
- spring - 使用 Spring Data Paging 确保当前页面是最后一个页面的方法
- python - TensorFlow Serving 客户端批处理
- file - 是否可以使用重定向运算符将输出重定向到文件而不在 Powershell 中写入字节顺序标记?
- sql - Redshift - 查找特定值存储在表中的列中的次数
- python - 基维虫?按钮的启用/禁用属性似乎没有更新,它只关心该字段是否存在并且不等于 0
- java - 重复定义字符串常量会占用更多内存吗?
- reactjs - Material-UI v1:如何为 material-ui v1 中的所有组件设置一个字体大小?
- android - 如何从 Android 向 Azure IoT Hub 发送 SMS
- ansible - 动态构建变量
- javascript - Jquery TokenInput 初始字符串搜索