如何从Spring MVC中的一个jsp更新两个实体/模型元素?

Lit*_*ski 3 spring controller crud spring-mvc

我的要求是通过向用户提供JSP中的表单以及来自两个实体的输入字段(例如UserDetailsEmploymentDetails)来执行CREATE操作.

使用单个提交在单个jsp中更新两个表单的最有效方法是什么?

我所知道的一种方法是将两个实体组合成一个包装类,然后将该对象作为模型发送.这是唯一的解决方案吗?

请指导.

jel*_*ies 6

将任意数量的对象放在包装器类中并使用此对象以单个表单提交数据是一种常见做法.此外,您可以在任何对象中使用JSR-303验证:

public class MyForm {

    @Valid
    private UserDetails userDetails;

    @Valid
    private EmploymentDetails employmentDetails;

    ...

}
Run Code Online (Sandbox Code Playgroud)

你的表格:

<form:form modelAttribute="myForm" method="post">
    <form:input path="userDetails.property1"/>
    <form:input path="userDetails.property2"/>
    <form:input path="employmentDetails.property1"/>
    <input type="submit" value="create"/>
</form:form>
Run Code Online (Sandbox Code Playgroud)

和你的控制器:

@RequestMapping(value = "/", method = RequestMethod.POST)
public ModelAndView create (@Valid MyForm myForm, BindingResult bindingResult) {

    if (bindingResult.hasErrors()) {
        // here you can retrieve form errors of both objects
    }

    UserDetails userDetails = myForm.getUserDetails();
    EmploymentDetails employmentDetails = myForm.getEmploymentDetails();

    ...

}
Run Code Online (Sandbox Code Playgroud)

另一种方法是通过JSON保存对象,但我认为在这种情况下是过度杀伤和过于复杂.