我对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.缩进实际上是好的,堆栈溢出编辑器是可怕的。
1条答案
按热度按时间izj3ouym1#
帖子类需要公开。这解决了这个问题。谢谢你,可怕的袋熊!