我有一个控制器,如果没有给定名称的用户,将返回404 NOT FOUND。
@GetMapping(value = "/profile/{username}", produces = MediaType.APPLICATION_JSON_VALUE)
public HttpEntity<User> getUsers(@PathVariable("username") String username) {
User user = userService.findOneByUsername(username);
if(user != null) {
return ResponseEntity.ok(user);
}
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
然后我创建了一个能够处理此异常的控制器
@ControllerAdvice
public class ExceptionHandlerController {
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public ModelAndView handleNotFound(NoHandlerFoundException e) {
return new ModelAndView("redirect:/signIn");
}
}
然而,它没有效果。控制器返回正常的默认404错误页面。它没有响应我的控制器。
编辑:我设置spring.mvc.throw-exception-if-no-handler-found = true
,但这也没有帮助。我正在使用Spring Boot。
答案 0 :(得分:0)
你没有在你的控制器中抛出NoHandlerFoundException。这样ControllerAdvice就不会运行了。