Optional Path Variable


@PathVariableとOptionalオブジェクト

  • ページ番号がない場合、2つのURLモードを指定したときに「/admin/items」URL要求を受けた場合、@PathVariable("page")のQuery String変数にマップされず、エラーなしでどのように動作するかを知りたい場合があります
  • オプションのオブジェクト変数?

  • ページのデータ型をintではなく「オプション」に指定した場合、エラーは発生しませんか?ページのデータをintに変換してテストする
  • 「admin/items」URLリクエストの結果は予想通りで、今回MissingPathVariableException例外が発生しました
  • すなわち、要求URLに@PathVariableとして指定されたQuery String変数がなくても、Optionalオブジェクト変数であればエラーが発生せずに正常に動作する.これについては、Baelungサイトで確認することができる.
  • Optional Path Variable


    기본적으로, 스프링은 URL 매핑 핸들러에서 @PathVariable 어노테이션이 지정된 파라미터와
    요청 URL 패턴에서 해당 파라미터와 일치하는 변수를 바인드한다.
    만약 일치하는 것을 찾을 수 없다면, Request를 해당 매핑 핸들러 메소드로 넘기지 않는다.
    예들들어 URL 패턴에 id path 변수를 선택적으로 받는 getArticle 메소드가 있을때,
    getArticle 메소드는 /article 과 /article/{id} URL 패턴을 모두 처리하게 되어있다.
    만약 id path 변수가 존재한다면, 스프링은 ariticleId 변수에 그것을 바인딩할 것이다.
  • URLマッピングハンドル方法は、
  • を含むすべてのパス変数を持たないモードを処理するように設定することができる.
    예를들어, /article/123 URL 요청은 articeId 변수를 123 으로 초기화한다.
    반대로, 만약 /article URL 요청을 보낸다면 스프링은 상태코드 500의 예외를 반환할 것이다.
    왜냐면 {id} 부분이 없기 때문에 스프링이 articleId 파라미터에 값을 초기화할 수 없기 때문이다.
    이러한 예외를 발생시키지 않기 위해서는 스프링에게 @PathVariable 파라미터 바인딩을 무시하도록 설정이 필요하다.
  • 要求URLに@PathVariableパラメータに一致するQuery String変数がない場合、エラー
  • が発生します.
    스프링 4.3.3 이후부터는 @PathVariable 어노테이션에 boolean 속성인 "required" 를 통해서
    핸들러 메소드에 path 변수가 필수적인지 아닌지를 선언할 수 있다.
    required 속성이 false 이기 때문에 스프링은 요청 URL 안에 {id} path가 존재하지 않아도 에러를 발생시키지 않는다.
    즉, 스프링은 {id} path 변수가 존재한다면 해당 값으로 articleId 를 초기화하고 그렇지 않으면 "null" 로 초기화한다.
    반대로 required 속성의 값이 true라면 스프링은 원래대로 예외를 발생시킬것이다.
  • スプリング4.3.3から@PathVariable Approtationに必要な属性によってpath変数の義務性
  • を制御できる.
    JDK 8 버전부터 지원되는 Optional 클래스를 사용하면 articleId 변수를 선택적으로 지정할 수 있다.
    스프링은 id의 값을 유지하기 위해서 Optional<Integer> 타입의 optionalArticleId 변수를 생성한다.
    만약 {id}가 존재한다면 그 값을 Optional 객체로 wrap 한다.
    반대로 존재하지 않는다면 "null" 값으로 wrap 한다.
    그러면 Optional 클래스의 isPresend(), get(), orElse() 메소드를 이용하여 해당 값에 접근할 수 있다.
  • @PathVariable Approtationで指定した変数をオプションのデータ型として作成すると、OptionalPathを実装できます.
  • n/a.結論

  • 要求URLモードに指定パラメータに一致する@PathVariableException変数が存在しない場合、MissingPathVariableException異常
  • @PathVariable Approtationが要求する属性値をfalseに設定しても異常は発生しません
  • .
  • @PathVariable Approtation指定するパラメータをOptionalオブジェクトとして作成しても、例外は発生しません.