Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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 spring map如何将数据发布到POJO?_Java_Spring Mvc_Pojo - Fatal编程技术网

Java spring map如何将数据发布到POJO?

Java spring map如何将数据发布到POJO?,java,spring-mvc,pojo,Java,Spring Mvc,Pojo,我有一个定义如下的spring控制器: @Controller @RequestMapping("/user") class UserController { ... @RequestMapping(method=RequestMethod.POST) public String save(User user) { // Do something with user return "redirect:/..."; } } 在这种情

我有一个定义如下的spring控制器:

@Controller
@RequestMapping("/user")
class UserController {
    ...
    @RequestMapping(method=RequestMethod.POST)
    public String save(User user) {
        // Do something with user
        return "redirect:/...";
    }
}
在这种情况下,post数据(从表单提交的数据)如何映射到用户对象?是否有任何文件说明这是如何工作的

如果我有两个这样的POJO会怎么样

@Controller
@RequestMapping("/user")
class UserController {
    ...
    @RequestMapping(method=RequestMethod.POST)
    public String save(User user, Foo anotherPojo) {
        // Do something with user
        return "redirect:/...";
    }
}

在第一种情况下,Spring MVC将尝试将HTTP POST参数名称与
用户
类的属性名称相匹配,并根据需要转换这些参数值的类型


在第二种情况下,我相信Spring会抛出一个异常,因为它只接受一个命令对象。

在许多情况下,如果POST参数名称与POJO属性名称相同,就足够了。但正确的方法是使用并将其绑定到pojo:

@Controller
@RequestMapping("/user")
class UserController {
    ...

    @RequestMapping(value="/login", method=RequestMethod.GET)
    public ModelAndView get() {
        return new ModelAndView().addObject("formBackingObject", new User());
    }

    @RequestMapping(value="/login", method=RequestMethod.POST)
    public String save(User user) {
        // Do something with user
        return "redirect:/...";
    }
}
然后在JSP中:

// e.g in user/login.jsp
<form:form method="post" commandName="formBackingObject" action="/user/login.html">
    <form:label path="username"><spring:message code="label.username" /></form:label>
    <form:input path="username" cssErrorClass="error" />
    <form:label path="password"><spring:message code="label.password" /></form:label>
    <form:password path="password" cssErrorClass="error" />
    <p><input class="button" type="submit" value="<spring:message code="label.login" />"/></p>
</form:form>
//例如在user/login.jsp中


您可以嵌套属性(例如,如果您的用户有address属性,那么address.street),但我认为Spring不会接受多个命令对象。

如果post参数与
用户中的属性不匹配,该怎么办?他们会被忽视吗?可以用
@RequestParam(“type”)类型来捕获它们吗?@Richard:它们将被忽略,是的,您可以将命令对象(如User)与@RequestParam以任意组合进行混合和匹配