2017-06-13 43 views
0

我有一个简单的数据传输类春@Valid适用于表单请求,但不与JSON身体

@Data 
public class UserDto { 

    @NotNull 
    @NotEmpty 
    private String username; 

    @NotNull 
    @NotEmpty 
    private String password; 

    @NotNull 
    @NotEmpty 
    private String email; 
} 

在我的控制器中我想使用的对象。

@PostMapping("https://stackoverflow.com/users/create") 
public ResponseEntity<Object> createUser(@ModelAttribute("UserDto") @RequestBody @Valid UserDto accountDto, BindingResult bindingResult, HttpServletRequest request) { 
    System.out.println(accountDto); 
    System.out.println(accountDto.getUsername()); 
    System.out.println(accountDto.getPassword()); 
    System.out.println(bindingResult.hasErrors()); 

    return new ResponseEntity<>("success", HttpStatus.OK); 

} 

我正在使用邮递员来测试我的api。这些请求在以formx-www-form-urlencoded发送时可以正常工作。我得到以下的输出:

UserDto(用户名= dsfssf,密码= dsfsdgfsg,[email protected]

dsfssf

dsfsdgfsg

但是,将请求作为JSON对象发送时,如

{"username": "ssss", "password": "test", "email": "[email protected]" } 

所有我得到的是

UserDto(用户名= NULL,密码= NULL,电子邮件= NULL)

真正

+2

您是否尝试删除@ModelAttribute并对其进行测试? –

回答

2

删除@ModelAttribute或它将查找请求中的数据t参数。

@RequestBody单独告诉Spring查找请求体内的数据。

相关问题