2017-07-08 14 views
0

私は、指定された名前のユーザーがいない場合、404 NOT FOUNDを返すコントローラを持っています。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

コントローラにNoHandlerFoundExceptionをスローしていません。このようにして、ControllerAdviceは実行されません。

+0

私はそれを処理し、自分のページを変更できますか? –

+0

あなたのコードによれば、あなたのコントローラーはAPIから来ていると思われ、200または404のいずれかを返します。例外ハンドラを動作させるには、代わりに新しいNoHandlerFoundException()をスローするか、NOT_FOUNDを返します。 –

関連する問題