簡體   English   中英

春天,最equest數據(發布)未綁定到POJO

[英]Requst data(post) not bind to a POJO in spring

我需要將表單數據映射到pojo中,因此ii將POJO設置為方法參數。 因此,請求數據應綁定到pojo。 但它不起作用。 我正在使用spring 4.2.3.RELEASE 這是我的代碼

PersonDto類

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;
}
}

UserController類

@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){

試試這個選項:

  1. 在POST方法中使用@RequestBody。

  2. 包括傑克遜的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.

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