2017-07-08 9 views
0

Ich habe einen Controller, der, falls es keinen Benutzer mit dem gegebenen Namen gibt, 404 NOT FOUND zurückgibt.404 Nicht gefunden Ausnahmebehandlung

@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); 
} 

Dann habe ich einen Controller, der diese Ausnahme

@ControllerAdvice 
    public class ExceptionHandlerController { 

    @ExceptionHandler(NoHandlerFoundException.class) 
    @ResponseStatus(value = HttpStatus.NOT_FOUND) 
    public ModelAndView handleNotFound(NoHandlerFoundException e) { 
     return new ModelAndView("redirect:/signIn"); 
    } 
} 

jedoch zu handhaben werden können, hat es keine Wirkung. Der Controller gibt die normale Standard 404-Fehlerseite zurück. Es reagiert nicht auf meinen Controller.

EDIT: Ich habe spring.mvc.throw-exception-if-no-handler-found = true gesetzt, aber das hat auch nicht geholfen. Ich benutze Spring Boot.

Antwort

0

Sie werfen NoHandlerFoundException nicht in Ihren Controller. Auf diese Weise wird der ControllerAdvice nicht ausgeführt.

+0

In welchem ​​Fall kann ich damit umgehen und Seite auf meinem ändern? –

+0

Laut Ihrem Code scheint Ihr Controller von einer API zu stammen und wird entweder 200 oder 404 zurückgeben. Sonst nichts. Um den Exception-Handler zu aktivieren, müssen Sie stattdessen NoHandlerFoundException() oder NOT_FOUND zurückgeben. –