繁体   English   中英

在Jsp中遍历ArrayList时发生NullPointerException

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM