我想用SpringBoot更新用户的数据。我只想改变名字,姓氏和尼克-没有密码。我得到的是当前登录用户,这是我的函数在服务类中的样子:
public User updateUser(User user) {
User currentUser = getCurrentUser();
currentUser.setNick(user.getNick());
currentUser.setLastName(user.getLastName());
currentUser.setFirstName(user.getFirstName());
return userRepository.save(currentUser);
}
我的控制器是这样的:
@PatchMapping("/updateUser")
@PreAuthorize("isAuthenticated()")
public UserDto updateUser(@RequestBody UserDto userDto) {
return userMapper.toDto(userService.updateUser(userMapper.toDao(userDto)));
}
当我运行我的应用程序并试图更新用户数据时,我遇到了一个错误:无法调用“java.lang.charsequence.tostring()”,因为“rawpassword”为null
我有不同的方法来更改密码,在这种情况下,我只想更改3个字段,而不是密码。我应该如何更改更新方法?
编辑:这是我的usermapper类:
public User toDao(UserDto userDto) {
return User.builder()
.categories(userDto.getCategories())
.id(UUID.randomUUID().toString())
.avatar(userDto.getAvatar())
.email(userDto.getEmail())
.newsletter(userDto.isNewsletter())
.firstName(userDto.getFirstName())
.nick(userDto.getNick())
.lastName(userDto.getLastName())
.password(passwordEncoder.encode(userDto.getPassword()))
.roles(Arrays.asList("USER"))
.build();
}
public UserDto toDto(User user) {
return UserDto.builder()
.categories(user.getCategories())
.id(user.getId())
.avatar(user.getAvatar())
.email(user.getEmail())
.firstName(user.getFirstName())
.lastName(user.getLastName())
.newsletter(user.isNewsletter())
.password(user.getPassword())
.nick(user.getNick())
.roles(user.getRoles())
.build();
}
暂无答案!
目前还没有任何答案,快来回答吧!