我使用@JsonIgnore
注释来防止在向用户发送用户详细信息时向用户公开密码:
public class UserDto {
private String username;
@JsonIgnore
private String password;
}
以下是用户API的响应:
{
"username": "test12"
}
但是在我点击保存API并发送时保存新用户
在数据之下,我的控制器方法正在使用null
密码
@JsonIgnore并获得空指针异常;
{
"username": "test1225",
"password": "admin"
}
控制器方法:
@RequestMapping(value = "/addAccount", method = RequestMethod.POST)
public ResponseEntity<Void> addAccount(@RequestBody UserDto userDto) {
User user = new User();
user.setUsername(userDto.getUsername());
user.setPassword(userDto.getPassword());
userService.saveUser(user);
return new ResponseEntity<Void>(HttpStatus.CREATED);
}
返回时有没有办法忽略Password参数 响应用户时不要忽略密码字段值 在控制器方法中获取请求体中的密码参数?
答案 0 :(得分:0)
您可以使用JsonView
来指定序列化/反序列化期间应包含哪些字段。请查看此博客文章,了解JsonViews - http://www.baeldung.com/jackson-json-view-annotation。
对于您的问题,您可以创建一个名为UserResponse的视图。
public class UserResponse {
}
并使用@JsonView(UserResponse.class)
public class UserDto {
@JsonView(UserResponse.class)
private String username;
private String password;
}
在控制器中,在返回类型上添加JsonView注释。
public @JsonView(UserResponse.class) ResponseEntity<Void> addAccount(@RequestBody UserDto userDto) {