2016-02-13 49 views
1

我需要将表单数据映射到pojo,所以我设置POJO作为方法参数。那么请求数据应该绑定到pojo。但它不工作。我正在使用弹簧4.2.3.RELEASE。这是在这里首页请求映射工作我的代码要求数据(后)不绑定到POJO在春天

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是空的。这是我如何发送请求request这是什么原因?

+0

@Abdelhak没有正如我所说的'home'请求工作正常是没有问题的。无需在此处放置nameApp。 'addUser'方法的打印语句也打印为null。 –

+0

你必须这样做,正如dlcole在答案中所建议的那样。只需用@RequestBody标记方法的参数 –

+0

@KenBekov我做到了。这是我得到的味精。 '服务器拒绝这个请求,因为请求实体的格式不是所请求方法的请求资源所支持的格式。我没有发送json数据。我正在发送表单数据作为POST请求。 –

回答

0

您需要注释PersonDto DTO与@RequestBody你的方法参数,以表明它应该被绑定到请求体:

public String addUser(@RequestBody PersonDto dto){ 
+0

不需要'@ RequestBody'。当我使用它'415'错误发生。因为我发送表单数据作为POST请求 –

0

试试这个选项:

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

  2. 包括杰克逊

    行家依赖

    com.fasterxml.jackson.databind.ObjectMapper

+0

杰克逊在这种情况下不需要。请求模型绑定工程没有json –

+0

@KenBekov不需要杰克逊..你是对的。这是简单的事情,应该工作。但不工作,我不能相信这一点。 –

+0

如果您添加了spring web项目,那么不需要Jackson。 – Rakesh

0

尝试,以纪念与@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> 
+0

我也是这样做的。 :( –