Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用modelAttribute提交Spring MVC表单_Java_Spring_Spring Mvc - Fatal编程技术网

Java 使用modelAttribute提交Spring MVC表单

Java 使用modelAttribute提交Spring MVC表单,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有点像 @RequestMapping("/showRegister") public String showUserRegistrationForm(ModelMap modelMap) { modelMap.addAttribute("user", new UserBean()); return "Register"; } @RequestMapping("/RegisterUser") public String registerUser(@ModelAttribute

我有点像

@RequestMapping("/showRegister")
public String showUserRegistrationForm(ModelMap modelMap) {
    modelMap.addAttribute("user", new UserBean());
    return "Register";
}

@RequestMapping("/RegisterUser")
public String registerUser(@ModelAttribute("user") UserBean userBean,
        BindingResult result, ModelMap modelMap) {
    System.out.println(userBean.getPassword());
    return "Register";
}
在我的代码中

上述方法非常有效。现在假设我想将表单中的模式数据保存到多个表中,每个表都有自己的POJO类。那么,代码如何才能不仅接收UserBean作为modeldattribute,还接收其他类呢。我是否必须创建一个新的POJO,其中包含来自这两个类的数据,或者是否有其他方法

编辑

我读过关于DTO的书。但这不是波乔的重复吗。我们不能混合使用2-3个POJO吗?

您可以创建一个“表单”bean,并将您的UserBean和任何其他POJO作为成员添加到其中。实际上,我更喜欢这样做,因为它使复杂的验证更容易、更独立

public class MyFormBean {

private UserBean userBean;
private MyOtherBean otherBean;

// Add getters and setters as needed

}
然后表单需要引用正确的路径来深入到对象中。 如果你有这样的事情:

<form:input path="name" />

你会把它改成

<form:input path="userBean.name" />


我应该怎么做。这里有什么变化。你能对DTO有什么评论吗。使用它而不是表单bean的任何优势。DTO允许不同系统之间的通信。我的建议可以被视为(视图和控制器之间)特定通信的DTO。DTO可能是一个全新的对象,对现有数据具有不同的表示形式。这会起作用,但很难维持。如果在一个位置添加字段,则需要将其添加到另一个对象。通过封装可以避免这种情况。看看Hibernate和其他ORM框架。或者看看JDBC(以及Spring之后的数据),了解如何将对象持久化到数据库。