Spring MVC - 从JSP的列表中访问表单中的对象

时间:2015-04-28 07:27:59

标签: java spring jsp spring-mvc

我正在尝试创建一个包含多个对象的表单。 我正在尝试创建一个表单,您可以在其中找到“product”和“customer”并将其添加到订单中。 我有2个模型类CustomerProductCustomerphoneNo个变量,Productname变量。 我发现传递多个对象的最简单方法是将它们添加到列表中并将List传递给View。这就是我正在做的事情,但访问这些模型对象是另一回事。

控制器类:

 @Controller
    public class OrderController {

    @RequestMapping(value="/create_order", method= RequestMethod.GET)
    public ModelAndView create_order() {
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("customer", new Customer());
        model.put("product", new Product());


        return new ModelAndView("create_order", "command", model);
    }
    }

网页:

<form:form method="POST" action="/Persistence_Web/order_confirmation" commandName="model">
<table>
<!-- I tried few different ways of writing it and all fail -->
    <tr><form:label path="model[0].phoneNo">Customer phone number</form:label></tr>
    <tr><form:input path="model[0].phoneNo"></form:input></tr>
....

2 个答案:

答案 0 :(得分:2)

要在模型中引用属性Product.nameCustomer.phoneNo,您必须引用模型中提供的名称以及属性名称(必须在类中具有getter! !!

<tr><form:input path="${customer.phoneNo}"></form:input></tr>
<tr><form:input path="${product.name}"></form:input></tr>

*如果你想在视图中操作它们,那么类中的属性必须有getter和setter。命名必须是:

private int attributeName
public  int getAttributeName()

但是:只要类中的getter方法与视图中的变量名类似。您可以使用getMyCalculation()方法 WITHOUT myCalculation属性来计算总计,平均值,格式化日期或您需要在视图中显示但不存储在模型中的任何内容

此外,对于各种ProductsCustomers,请使用列表:

List<Customer> customers = // fill the list!!!
model.put("customers", customers);

并使用<for:earch>

进行迭代
<c:forEach items="${customers}" var="customer">     
    <c:out value="${customer.phoneNo}"/>
</c:forEach>

答案 1 :(得分:1)

据我了解你的问题,你不能以这种方式访问​​模型对象。请尝试使用弹簧占位符${command.get('customer').phoneNo}