JSTL不输出对象属性值

时间:2018-11-26 20:11:04

标签: java list servlets jstl

我是Java servlet的新手,因此当这个问题出现时,我正在努力解决这个问题,并且我进行了很多搜索以获取解决方案,但是没有运气。

在Servlet中

我已经在会话中存储了一个对象列表,并将其转发到JSP页面。

List<PostBean> posts= PostDAO.getPosts(user.getId());
session.setAttribute("posts", posts);
request.getRequestDispatcher("dashboard.jsp").forward(request, response);

在这里,getPosts()返回用户创建的所有帖子为List<PostBean>

在JSP页面中

<% List<PostBean> posts = (List<PostBean>) session.getAttribute("posts");
   request.setAttribute("posts", posts);
%>

<section class="posts">
    <c:forEach items="${posts}" var="post">
       <h2><c:out value="${post.userId}"/></h2>
    </c:forEach>
</section>

我在关于stackoverflow的答案中了解到,对象列表必须这样存储在请求对象中,然后才能在jstl中使用,而我也尝试使用sessionScope.posts,但仍然无法正常工作。 / p>

PostBean

我已经公开了它的两个属性,只是因为在对象上调用getter方法被警告为Cannot resolve method 'getBody'。因此,要直接访问它们,我将它们公开,但是仍然无法使用。

package Beans;

public class PostBean {

   private int id;
   public String body; //made public 
   public int userId;  //made public
   private String link;
   private String date;

   public int getId() {
       return id;
   }

   public void setId(int id) {
       this.id = id;
   }

   public String getBody() {
       return body;
   }

   public void setBody(String body) {
       this.body = body;
   }

   public int getUserId() {
       return userId;
   }

   public void setUserId(int userId) {
       this.userId = userId;
   }

   public String getLink() {
       return link;
   }

   public void setLink(String link) {
       this.link = link;
   }

   public String getDate() {
      return date;
   }

   public void setDate(String date) {
       this.date = date;
   }

}

代码有什么问题?有人可以简要解释一下吗?

谢谢。

0 个答案:

没有答案