Как мне написать этот JSTL для цикла в JSP? Невозможно найти однозначный метод: класс java.lang.Math.min (Long, Integer) - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть следующее:

    <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) (страница + 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 не смог разобрать его.

1 Ответ

0 голосов
/ 07 ноября 2018

Попробуйте использовать 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...