Каковы возможные причины JasperException - PullRequest
2 голосов
/ 30 апреля 2010

У меня есть JSP, который берет Arraylist из объекта сеанса и удаляет элементы из него. Казалось, что он работает нормально, и тогда, когда я перехожу на эту страницу, страница пуста. Я проверил файлы журнала Tomcat и в catalina.out я получаю JasperException, и он показывает, что он находится в строке со следующим

for(int i; i < agentItems.size(); i++)

agentItems - это имя ArrayList, которое я использую. Я его отлаживал и не могу понять, в чем проблема. Я читал, что JasperException - это что-то вроде JSP NullPointerException. Это правда или я просто упускаю из виду проблему?

У меня есть веб-приложение, работающее на локальной машине, и промежуточный сервер для разработки, в котором у них обоих не было проблем. Почему это может быть связано только с этим сервером?

Ответы [ 2 ]

3 голосов
/ 30 апреля 2010

Это может быть все . Вам нужно посмотреть немного дальше в трассировке стека, заглянуть в часть caused by или root cause и след, который последует за ним. Это может быть вызвано многими вещами. JSP в основном компилируется в один большой try блок, и любой перехваченный Throwable будет заключен в специфическое исключение сервлет-контейнера, такое как JasperException в Tomcat и клонах. Это сводится к этому:

try {
    // All translated JSP code comes here. Max 64K.
} catch (Throwable t) {
    throw new JasperException(t);
}

Проверьте имя файла .java в 1-й строке трассировки стека, найдите его в каталоге work сервлет-контейнера и откройте файл в редакторе. Вы это видите?

Тем не менее, использование скриптлетов является плохой практикой . Используйте сервлеты для управления запросами / предварительной обработки / постобработки, используйте Javabeans для представления моделей данных, используйте Taglibs в JSP для управления потоком и выводом страниц, используйте язык выражений (EL) в JSP для доступа к данным бэкэнда. В вашем конкретном случае вы можете перебрать массив или List, используя JSTL c:forEach tag.

<c:forEach items="${agents}" var="agent">
    <p>Agent: ${agent.name}
</c:forEach>
0 голосов
/ 21 сентября 2013

jasperexception также может происходить, когда JSP не может получить доступ к элементу или элементу, который он получает извне, и здесь он, возможно, не может получить доступ к agentItems. Попробуйте предоставить полное имя класса или импортировать пакет в противном случае.

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