NullPointerException при переборе ArrayList в jsp

1

Я показываю список, содержащий объекты, которые хранят информацию о сообщении. Список загружается через получение запроса как такового:

ArrayList<MessageModel> list = (ArrayList<MessageModel>) request.getAttribute("msgList");

Я пытаюсь отобразить информацию, содержащуюся в каждом объекте как таковой:

for(MessageModel msg : list){
                String messageTo = msg.toAddress;
                String messageSub = msg.messageSubject;
                out.println(messageTo+ " " +messageSub);
            }

Я получаю исключение NullPointerException для каждого утверждения.

В стороне, я использую этот подход для отладки, поскольку я хочу проверить, могу ли я вообще отображать содержимое объекта MessageModel. Я попытался использовать тег JSTL forEach, но я не смог получить доступ к атрибутам объекта.

 <c:forEach items="${list}" var="current">
     <li><c:out value="${current.toAddress}"/></li>
 </c:forEach>

Я устанавливаю атрибут следующим образом:

 ArrayList<MessageModel> list =(ArrayList<MessageModel>) request.getAttribute("msgList");
 pageContext.setAttribute("messages", list);

Это приводит к появлению следующего сообщения об ошибке при запуске:

org.apache.jasper.JasperException: /inbox.jsp (line: 37, column: 12) According to TLD or attribute directive in tag file, attribute items does not accept any expressions

И intelliJ говорит, что он не может разрешить список переменных.

РЕДАКТИРОВАТЬ:

Я пересылаю запрос с сервлета, который обрабатывает логин пользователя следующим образом:

 ArrayList<MessageModel> msglist = MessageModel.getRecievedMessages(username);
 request.setAttribute("msgList", msglist);

Я пытаюсь передать ArrayList, который содержит объекты сообщения, а затем перебирает список и отображает его в jsp.

Есть ли возможность для самой jsp получить информацию? У меня есть отдельный класс java, который обрабатывает сообщения с кучей вспомогательных функций. Могу ли я вызвать метод, который извлекает все эти сообщения и отображает их без явной установки атрибута запроса в сервлет? Потому что я буду перемещаться между другими страницами приложения.

Извините, если мой словарь был отключен, это первый раз, когда я работаю с jsp и сервлетами.

  • 0
    как вы установили список в области запроса показать, что
Теги:
jsp
jstl

2 ответа

2
Лучший ответ

NullPointerException в цикле foreach, вероятно, связано с тем, что переменная list имеет значение null. Вы можете проверить, что list не является null до его повторения.

Что касается JasperException, можете ли вы описать, как вы JasperException к JSP?

Кроме того, это, вероятно, опечатка, но вы устанавливаете атрибут с именем messages, затем вы перебираете атрибут с именем list в <c:foreach>...

  • 0
    Извините, что это опечатка, я отредактировал оригинальное сообщение с дополнительной информацией.
0

Я решил эту проблему, используя методы getter и setter, чтобы получить членов класса MessageModel.

EL tag wiki: эта статья помогла мне понять, как взаимодействовать с классом java и jsp.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню