我编写了自己的扩展了ResponseEntityExceptionHandler的处理程序,并且希望在我的rest控制器中实现它,但是我找不到如何执行该操作的任何示例:
这是我的控制者:
@RestControllerAdvice
public class ErrorController extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(
MethodArgumentNotValidException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request) {
return new ResponseEntity<>(ex.getBindingResult().toString(), HttpStatus.BAD_REQUEST);
}
}
这是我的控制器方法。它应按ID返回用户:
@GetMapping(path = "/{id}")
public @ResponseBody ResponseEntity<?> getUserById(@PathVariable("id") String userId) {
if (!usersService.existsByUserId(Integer.valueOf(userId))) {
return new ResponseEntity<>(new CustomResponseMessage(HttpStatus.BAD_REQUEST, "UserEntity with ID=" + userId + " doesn't exist!"), HttpStatus.BAD_REQUEST);
}
UserEntity userEntity = usersService.findById(Integer.valueOf(userId));
Set<String> userRoles = new HashSet<>();
for (RoleEntity roleEntity : userEntity.getRoles()) {
userRoles.add(new StringBuilder().append(roleEntity.getRole()).toString());
}
UserDTO userDTO = UserDTO.builder()
.userId(userEntity.getUserId())
.firstName(userEntity.getFirstName())
.lastName(userEntity.getLastName())
.emailLogin(userEntity.getEmailLogin())
.isActive(userEntity.isActive())
.department(userEntity.getDepartmentEntity().getName())
.roles(userRoles)
.build();
return new ResponseEntity<>(userDTO, HttpStatus.OK);
}
我想更改要检查用户是否存在的部分。我想使用我的处理程序。