如何从控制器传递多个模型对象以及如何将所有作为命令对象传递给spring mvc中的form:form?


问题内容

场景就像我想从控制器传递多个模型对象一样,我可以实现,

 model .addAttribute(“person”, new Person());
 model.addAttribute(“address”, new Address());

但是如何在spring视图中同时通过两者或更多

<form:form action=”registration” command=”person”>

因为它只允许我传递一个命令。然后如何将所有require命令传递给它们。


问题答案:

只需将person和都添加address到一个称为的信封对象中,personDetails然后将其传递给表单即可。

class PersonDetails {
    private Person person;
    private Address address;

    ...
}


PersonDetails personDetails = new PersonDetails();
personDetails.setPerson(new Person());
personDetails.setAddress(new Address());

model.addAttribute(“personDetails”, personDetails);


<form:form action=”registration” command=”personDetails”>

完成后,您将必须path适当修改。

<form:input path="firstName" />

变成

<form:input path="person.firstName" />

其他更优雅的选择是封装Address内的Person,只是露出Person一个命令。就像@Seabook在下面的答案中提到的那样。