簡體   English   中英

Spring地圖如何將數據發布到POJO?

[英]How does spring map post data to POJO?

我有一個如下定義的彈簧控制器:

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

在這種情況下,發布數據(從表單提交的數據)如何映射到User對象? 有沒有關於它是如何工作的文件?

如果我有兩個像這樣的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參數名稱與User類的屬性名稱進行匹配,並根據需要轉換這些參數值的類型。

在第二種情況下,我相信Spring會拋出異常,因為它只接受一個Command對象。

在許多情況下,如果POST參數名稱與POJO屬性名稱相同,則應該足夠了。 正確的方法是使用Spring form taglib並將其綁定到你的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>

您可以嵌套您的屬性(例如,如果您的用戶具有地址屬性,則為address.street),我不認為Spring會接受多個命令對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM