0

学习spring+jsp。

我在控制器的方法中设置模型属性

@RequestMapping("/viewExpenses")
public String viewAllExpenses(Model model){

    List<Expense> expenses;
    expenses = expenseService.getAllExpenses();
    model.addAttribute(expenses);
    for(Expense e : expenses)
    System.out.println(e);
    return "viewExpenses";
}

其中费用规模 > 1

Following is my jsp page:
<%@ taglib prefix="s" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form"%>  
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Home Page</title>
</head>
<body>
<h2>
    Hello ${user.firstName} <br> <a href="homepage">HOME</a>
</h2>
<div>All Expenses</div>
<span style=""></span>
<c:forEach var="expense" items="${expenses}">
    <c:out value="${expense.expenseId}"></c:out>
    <c:out value="${expense.expenseName}"></c:out>
    <c:out value="${expense.expenseType}"></c:out>
    <c:out value="${expense.expensePrice}"></c:out>
    <c:out value="${expense.purchaseDate}"></c:out>
    <c:out value="${expense.expenseComments}"></c:out>
</c:forEach>
</body>
</html>

以下是我的 jsp 输出(无错误):Hello Pravat HOME All Expenses

我想知道为什么我的jsp中没有填写费用

4

2 回答 2

1

你需要给你的属性一个属性名称:

model.addAttribute("expenses", expenses);

背景: 当未提供名称时,Spring 使用生成的名称,该名称与变量名称不同。文档对此进行了解释:

根据提供的对象的具体类型确定其常规变量名称。使用的约定是返回Class的非大写短名称,根据 JavaBeans 属性命名规则:因此,com.myapp.Product 变为 product;com.myapp.MyProduct 变为 myProduct;com.myapp.UKProduct 变为 UKProduct。

于 2013-04-13T20:18:02.620 回答
1
  1. 给它一个名字

    model.addAttribute("expenses", expenses);
    
  2. 返回模型和视图。

  3. 始终将 if/for/etc 的主体包含在 {} 中,即使它是单行的。

于 2013-04-13T20:18:52.213 回答