[英]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.