这应该很容易。我在jsp页面中创建了c:forEach
循环。此循环应显示我的服务类从db中提取的对象。服务类正确提取列表,列表非空。所以问题应该在我的jsp页面中。在创建这个jsp时我遵循了教程,这就是为什么我不明白什么在这里不起作用。
这是它:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link
href="${pageContext.request.contextPath}/resources/css/poem-list.css"
rel="stylesheet" />
<title>Poem Collection</title>
</head>
<body>
<div id="maincontainer">
<p>Poems</p>
</div>
</div>
<div id="contentcolumn">
<form method="GET">
<table align="center">
<!-- tbody -->
<c:forEach var="poem" items="${poems}">
<tr>
<td>
<p class="title">${poem.title}</p>
<p class="annotation">by DUMMY<br>
written in ${poem.date}<a href="${pageContext.request.contextPath}/collection.html">
<input type="button" class="view" value="View" />
</a>
</p>
</td>
</tr>
</c:forEach>
<!-- /tbody-->
</table>
</form>
</div>
<div id="bottom-footer">
<p>My Collection</p>
</div>
</div>
</body>
</html>
显示集合的控制器,并使用poem-list.jsp
循环调用forEach
。
@RequestMapping(value = "/collection")
public ModelAndView collectionPage() {
ModelAndView modelAndView = new ModelAndView("poem-list");
List<Poem> poems = poemService.getPoems();
modelAndView.addObject("poems", poems);
return new ModelAndView("poem-list");
}
我的服务类从db:
中提取数据@SuppressWarnings("unchecked")
public List<Poem> getPoems() {
return getCurrentSession().createQuery("from Poem").list();
}
答案 0 :(得分:4)
在您的控制器中,您正在实例化ModelAndView modelAndView
但返回另一个实例:
return new ModelAndView("poem-list");
将其替换为:
return modelAndView;
它应该有效
答案 1 :(得分:1)
最常见的原因是poems
未在任何范围内设置。
请使用以下代码验证:
<c:if test="${poems ==null || poems.size()==0}">Poems are not found</c:if>