我的JSP模板没有呈现我的spring控制器中定义的自定义Java对象,如何在JSP中包含自定义对象?

umuewwlo  于 2022-12-07  发布在  Spring
关注(0)|答案(1)|浏览(125)

我对java、spring和JSP还很陌生。我写了一个自定义的java类,并手动定义了它的一些示例。我把这些示例放入对象的ArrayList中,但是当我试图在我的模型中包含这个列表时,它不能通过jsp正确地呈现。
Spring控制器:

@Controller
public class HomeController {

@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView getdata() {
    
    List<Post> list = getList();

    //return back to index.jsp
    ModelAndView model = new ModelAndView("views/index");
    model.addObject("lists", list);

    return model;
}
class Post{
    private String type;
    private String title;
    private String content;
    private String likes;

    public Post(String type, String title, String content, String likes){
        this.type=type;
        this.title=title;
        this.content=content;
        this.likes=likes;
    }
    public String getType(){
        return type;
    }
    public String getTitle(){
        return title;
    }
    public String getContent(){
        return content;
    }
    public String getLikes(){
        return likes;
    }
}

private List<Post> getList() {

    List<Post> list = new ArrayList<Post>();
    
    Post post1 = new Post("1", "post 1", "post 1 cont", "3");
    Post post2 = new Post("1", "post 2", "post 2 cont", "12");
    Post post3 = new Post("2", "post 3", "post 3 cont", "0");
    Post post4 = new Post("3", "post 4", "post 4 cont", "1000");

    list.add(post1);
    list.add(post2);
    list.add(post3);
    list.add(post4);

    return list;

}

}

JSP:

<%@ include file="../partials/taglibs.jsp" %>
<!DOCTYPE html>
<html>
<head>
    <jsp:include page="../partials/head.jsp"/>
    <title>Home</title>
</head>
<body>
<div class="container">
    <c:if test="${not empty lists}">
        <ul>
            <c:forEach var="listValue" items="${lists}">
                <li>${listValue.title}</li>
            </c:forEach>
        </ul>

    </c:if>
</div>
</body>
</html>

我在浏览器中得到服务器状态代码500,并出现以下错误:属性[标题]在类型[com. luwojtaszek. springbootjsp. web. controller. HomeController $Post@36130bcf]上不可读
如果我从JSP文件中删除title属性,如下所示:

<c:forEach var="listValue" items="${lists}">
      <li>${listValue}</li>
</c:forEach>

我去掉了500服务器错误,但我的无序列表是无意义的:

  • 您好!欢迎访问我们的网站!
  • 您好,欢迎光临本站!
  • 您好,欢迎光临本站!
  • 您好,欢迎光临本站!

因此,看起来我创建的列表中确实发送了四个东西。问题是我做错了什么,控制器或JSP都不能处理它。
我所要做的就是显示一些测试数据,以便我可以用js来操作它。
如何在JSP中使用自定义对象?
pidoss.缩进实际上是好的,堆栈溢出编辑器是可怕的。

izj3ouym

izj3ouym1#

帖子类需要公开。这解决了这个问题。谢谢你,可怕的袋熊!

相关问题