【发布时间】:2014-11-21 03:35:09
【问题描述】:
我正在显示一个列表,其中包含存储消息信息的对象。列表是通过获取请求来加载的:
ArrayList<MessageModel> list = (ArrayList<MessageModel>) request.getAttribute("msgList");
我正在尝试显示每个对象中包含的信息:
for(MessageModel msg : list){
String messageTo = msg.toAddress;
String messageSub = msg.messageSubject;
out.println(messageTo+ " " +messageSub);
}
我在 for each 语句中收到 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 说它无法解析变量列表。
编辑:
我转发来自处理用户登录的 servlet 的请求,如下所示:
ArrayList<MessageModel> msglist = MessageModel.getRecievedMessages(username);
request.setAttribute("msgList", msglist);
我正在尝试传递包含消息对象的 ArrayList,然后遍历列表并将其显示在 jsp 中。
jsp本身是否有可能获取信息?我有一个单独的 java 类,它使用一堆辅助函数处理消息。那么我可以调用检索所有这些消息并显示它们的方法,而无需在 servlet 中显式设置请求属性吗?因为我将在应用程序的其他页面之间导航。
对不起,如果我的词汇量不够,这是我第一次使用 jsp 和 servlet。
【问题讨论】:
-
你是如何在请求范围内设置列表的,请显示