Posiadam kontroler, który w razie przypadku, gdy nie będzie użytkownika o podanej nazwie, to zwróci 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);
}
Następnie stworzyłem kontroler, który będzie w stanie obsłużyć ten wyjątek
@ControllerAdvice
public class ExceptionHandlerController {
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public ModelAndView handleNotFound(NoHandlerFoundException e) {
return new ModelAndView("redirect:/signIn");
}
}
Jednak nie ma żadnego efektu. Kontroler zwraca mi normalną domyślną stronę błędu 404. Nie reaguje na mój kontroler.
EDIT: Ustawiłem spring.mvc.throw-exception-if-no-handler-found=true , ale to również nie pomogło. Używam Spring Boot.
Chcę uzyskać taki efekt jak na stronie https://myanimelist.net/profile/jonkijonki . Podałem zła nazwę użytkownika i pokazało mi spersonalizowaną stronę błędu 404.