Java 如何从controller传递多个模型对象,以及如何在SpringMVC中将所有作为命令对象传递到form:form?

Java 如何从controller传递多个模型对象,以及如何在SpringMVC中将所有作为命令对象传递到form:form?,java,spring-mvc,Java,Spring Mvc,这个场景就像我想从控制器中传递多个模型对象,我可以这样实现 model .addAttribute(“person”, new Person()); model.addAttribute(“address”, new Address()); 但是如何在SpringView中同时传递这两个或更多 <form:form action=”registration” command=”person”> 因为它只允许我传递一个命令。然后,如何将所有require命令传递给他们。只需

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

 model .addAttribute(“person”, new Person());
 model.addAttribute(“address”, new Address());
但是如何在SpringView中同时传递这两个或更多

<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”>
变成

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


另一个更优雅的选择是将
地址
括在
个人
中,并将
个人
作为命令公开。正如@Seabook在下面的回答中提到的。

只需将
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”>
变成

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


另一个更优雅的选择是将
地址
括在
个人
中,并将
个人
作为命令公开。正如@Seabook在下面的回答中提到的。

您好,非常感谢您的快速回答及其有效性。但我还是想知道,spring有没有办法让我们传入多个命令对象?没有。这与命令模式背道而驰!请注意,当您使用
model.addAttribute
向模型添加属性时,JSP中提供了所有这些变量。您只需使用EL即可访问它们。@adarshr我想知道我的第二个实体是否有一个列表,该列表是第一个实体的一部分,如何将第二个实体对象传递给表单?您好,非常感谢您的快速回答及其工作。但我还是想知道,spring有没有办法让我们传入多个命令对象?没有。这与命令模式背道而驰!请注意,当您使用
model.addAttribute
向模型添加属性时,JSP中提供了所有这些变量。您只需使用EL即可访问它们。@adarshr我想知道我的第二个实体是否有一个列表,它是第一个实体的一部分,我如何将第二个实体对象传递给表单?