我有一个简单的数据传输类
@Data
public class UserDto {
@NotNull
@NotEmpty
private String username;
@NotNull
@NotEmpty
private String password;
@NotNull
@NotEmpty
private String email;
}
在我的控制器中,我想使用该对象。
@PostMapping("/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。将请求作为form
或x-www-form-urlencoded
发送时,请求正常。我得到以下输出:
UserDto(用户名= dsfssf,密码= dsfsdgfsg,电子邮件=ssfds@dsgfsg.com)
dsfssf
dsfsdgfsg
假
但是,将请求作为JSON对象发送时,如
{"username": "ssss", "password": "test", "email": "samauaa@sdfsdfsd.com" }
我得到的只是
UserDto(username = null,password = null,email = null)
空
空
真
答案 0 :(得分:2)
删除@ModelAttribute
或者它会在请求参数中查找数据。
@RequestBody
告诉Spring在请求体内查找数据。