在一页弹簧mvc中显示数据

时间:2013-11-18 18:31:30

标签: jsp spring-mvc

我不明白问题所在,要显示数据。他有标题(名称,价格和数量),但没有数据

这是控制器

@Controller
public class ProductListController {

        @Autowired ProductRepository productRepository;

        @RequestMapping("/productlist")
        public ModelAndView showProductList() {
            ModelAndView mv = new ModelAndView("productlist");  
            List<Product> list = productRepository.findAll();
            mv.addObject("displayProduct",list);
            return mv;
        }

    }

这是productlist.jsp

<!DOCTYPE html >
<%@  page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<%@  taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %>
<%@  taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>

<html>
<head>
   <title>Product</title>
</head>
<body>
<form:form method="POST" modelAttribute="displayProduct">
<table border="1" >
 <tr>
   <td>Name</td>
   <td>Price</td>
   <td>Quantity</td>
 </tr>
<c:forEach items="${displayProduct}" var="p">
   <c:out value="${p.name}"/>
</c:forEach>

</table>

</body>
</html>

3 个答案:

答案 0 :(得分:0)

确保渲染正确的标记。

<c:forEach items="${displayProduct}" var="p">
    <tr>
        <td><c:out value="${p.name}"/></td>
        <td><c:out value="${p.price}"/></td>
        <td><c:out value="${p.quantity}"/></td>
    </tr>
</c:forEach>

另外,请确保productRepository.findAll()实际返回一些结果。如果它是一个空结果集,您将看不到JSP上的任何内容。

答案 1 :(得分:0)

我使用consol方式测试了方法productRepository.findAll(),它显示了结果,并按照您的建议更改了我的代码。我总是遇到同样的问题

<!DOCTYPE html >
<%@  page language="java" contentType="text/html; charset=ISO-8859-1"  pageEncoding="ISO-8859-1"%>
<%@  taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %>
<%@  taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>

<html>
<head>
   <title>Product</title>
</head>
<body>
    <form:form method="POST" modelAttribute="displayProduct">
    <h1>Product</h1>

    <table border="1" >

        <tr>
            <td>Name</td>
            <td>Price</td>
            <td>Quantity</td>
            <td colspan="2">Actions</td>

        </tr>

    <c:forEach items="${displayProduct}" var="p">
       <tr>
        <td><c:out value="${p.name}"/></td>
        <td><c:out value="${p.price}"/></td>
        <td><c:out value="${p.quantity}"/></td>
      </tr>
    </c:forEach>


    </table>

    <a href="<c:url value='/'/>">home page</a><br/>
    </form:form>


</body>
</html>

答案 2 :(得分:0)

很高兴看到你的Product对象。 你有三个getter get(),getPrice()和getQuantity()吗?

您的Product pojo必须与要与JSP表达式语言一起使用的JavaBeans命名约定匹配:$ {p.name},$ {p.price}和$ {p.quantity}