我有一个如下的可分页控制器。我使用了根据条件提供 HttpServletResponse 的过滤器。如果只有 HttpServletResponse 状态代码为 200,我想显示所有用户。否则我想显示自定义消息。
@GetMapping("/user/all")
@JsonView(Views.UserDetailView.class)
public ResponseEntity<?> getAllUsers(Pageable pageable,HttpServletResponse response) {
if (response.getStatus() == 200)
return ResponseEntity.ok(userRepository.findAll(pageable));
else
return new ResponseEntity<>(new JsonResponse("some error msg to show"),
HttpStatus.NOT_ACCEPTABLE);
}
我的用户存储库示例
public interface UserRepository extends JpaRepository<User, String> {
}
JsonResponse Dto
public class JsonResponse {
private String message;
private HttpStatus httpStatus;
//getter setter and constructor..
}
上述实现的问题是,如果过滤器给出的响应代码不是 200,那么来自控制器的响应将不会显示自定义错误消息。它只显示响应代码。过滤器可以产生各种错误代码,例如 402 和 406。如何显示自定义错误消息?
ps:所有其他控制器都可以正常工作,除了带有 Pageable 对象的控制器