[英]NullPointerException when iterating over ArrayList in jsp
我正在显示一个列表,其中包含存储消息信息的对象。 通过这样获取请求来加载列表:
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说它无法解析变量列表。
编辑:
我从处理用户登录的servlet转发请求,如下所示:
ArrayList<MessageModel> msglist = MessageModel.getRecievedMessages(username);
request.setAttribute("msgList", msglist);
我试图传递包含消息对象的ArrayList,然后遍历列表并将其显示在jsp中。
jsp本身是否有可能获取信息? 我有一个单独的java类,它使用大量的辅助函数来处理消息。 因此,我可以调用检索所有这些消息并显示它们而无需在Servlet中显式设置请求属性的方法吗? 因为我将在应用程序的其他页面之间导航。
抱歉,如果我的词汇量不多,这是我第一次使用jsp和servlet。
foreach循环中的NullPointerException
可能是由于list
变量为null
。 您可以在迭代之前检查list
不为null
。
关于JasperException
,您能描述一下如何转发到JSP吗?
同样,这可能是一个错字,但是您设置了一个名为messages
的属性,然后在<c:foreach>
中的一个名为list
的属性上进行迭代...
我通过使用创建getter和setter方法来获取MessageModel的类成员来解决此问题。
EL标签Wiki :这篇文章帮助我了解了如何将Java类和jsp接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.