2017-01-04 4 views
0

残りのAPI URLにパス変数がない場合、例外を処理または処理するにはどうすればよいですか?休止中にパス変数が見つからない場合にキャッチするAPI

私は春4.3.2を使用しています。私はMissingPathVariableExceptionが投げられるという印象を受けました。しかし、それはその例外を投げているわけではありません。

コントローラ方法:

@RequestMapping(method = RequestMethod.GET, value="favorite/all/{userCd}") 

public List<UserApplicationDTO> getAllUserFavorites(@PathVariable("userCd") String userCd) throws MyException{ 

    Validation.checkNotNull(userCd,message.getNotNullMessageUser()); 
    return userFavoriteService.getAllUserFavorites(userCd); 
} 

ハンドラメソッド:

@Override 
protected ResponseEntity<Object> handleMissingPathVariable(MissingPathVariableException ex, HttpHeaders headers, 
     HttpStatus status, WebRequest request) { 

    String error = ex.getParameter() + " parameter is missing"; 
    ErrorMessageHandler apiError =message(HttpStatus.BAD_REQUEST, ex.getLocalizedMessage(), error) ; 
    return new ResponseEntity<Object>(apiError, new HttpHeaders(), HttpStatus.BAD_REQUEST); 

} 

答えて

0

パス変数が欠落している場合、コントローラは、コントローラのメソッドへのパス変数を指定せずにURLをマップしようとするだろう。たとえば、あなたのケースでは、パス変数のないURLは "app-context"/favorite/all /です。そしてそのURLでメソッドが見つからないと、404エラーが生成されます。グローバル例外ハンドラを記述する必要があります。このブログ記事を見てください。 https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

関連する問題