为什么“c:forEach”循环在这个jsp中什么也没有返回?

时间:2014-05-28 10:19:14

标签: spring hibernate jsp

这应该很容易。我在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();
}

2 个答案:

答案 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>