[英]Requst data(post) not bind to a POJO in spring
我需要將表單數據映射到pojo中,因此ii將POJO設置為方法參數。 因此,請求數據應綁定到pojo。 但它不起作用。 我正在使用spring 4.2.3.RELEASE
。 這是我的代碼
public class PersonDto {
private int userId;
private String userName;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
@Controller()
@RequestMapping("/u")
public class UserController {
@ResponseBody
@RequestMapping(value = "/add",method = RequestMethod.POST)
public String addUser(PersonDto dto){
System.out.println("Name : "+dto.getUserName());
return ""+dto.getUserName();
}
@RequestMapping("/home")
public String userHome(){
System.out.println("UserDetailsController Index");
return "user-home";
}
}
在這里家庭請求映射正在工作。 但是當我向/add
發送發帖請求時,PersonDto為空。 這是我發送請求的方式 這是什么原因?
您需要在方法參數中使用@RequestBody注釋PersonDto dto,以指示它應綁定到請求主體:
public String addUser(@RequestBody PersonDto dto){
試試這個選項:
在POST方法中使用@RequestBody。
包括傑克遜的Maven依賴
com.fasterxml.jackson.databind.ObjectMapper
嘗試使用@ModelAttribute
批注標記方法參數:
@ResponseBody
@RequestMapping(value = "/add",method = RequestMethod.POST)
public String addUser(@ModelAttribute("dto") PersonDto dto){
System.out.println("Name : "+dto.getUserName());
return ""+dto.getUserName();
}
注意,您可以指定模型屬性的名稱。 如果使用<spring:form>
標記,請檢查是否具有modelAttribute
屬性:
<form:form method="POST" action="/someaction" modelAttribute="dto">
...
</form:form>
我參加聚會可能已經很晚了,但是如果這個問題尚未解決(因為我沒有看到任何可接受的答案),那么這個答案可能會有所幫助。 我有一個類似的問題,並且意識到我沒有添加可以設置在請求正文中傳遞的所有參數的構造函數。 因此,也許添加以下構造函數:
public PersonDto(int userId, String userName){
this.userId=userId;
this.userName=userName;
}
請讓我知道這是否適合您。 如果已經做了其他事情,請分享您的答案,因為實現我的愚蠢錯誤對我來說是一項艱巨的任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.