クラス SimpleMappingExceptionResolver

java.lang.ObjectSE
org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver
org.springframework.web.servlet.handler.SimpleMappingExceptionResolver
実装されたすべてのインターフェース:
OrderedHandlerExceptionResolver

public class SimpleMappingExceptionResolver extends AbstractHandlerExceptionResolver
HandlerExceptionResolver 実装。指定されたハンドラーセットまたは DispatcherServlet 内のすべてのハンドラーのいずれかに対して、例外クラス名をビュー名にマッピングできます。

エラービューはエラーページ JSP に類似していますが、チェックされたものを含むあらゆる種類の例外、特定のハンドラーのきめ細かいマッピングで使用できます。

導入:
22.11.2003
作成者:
Juergen Hoeller, Arjen Poutsma, Rossen Stoyanchev
関連事項:
  • フィールドの詳細

    • DEFAULT_EXCEPTION_ATTRIBUTE

      public static final StringSE DEFAULT_EXCEPTION_ATTRIBUTE
      例外属性のデフォルト名: 「例外」。
      関連事項:
  • コンストラクターの詳細

    • SimpleMappingExceptionResolver

      public SimpleMappingExceptionResolver()
  • メソッドの詳細

    • setExceptionMappings

      public void setExceptionMappings(PropertiesSE mappings)
      例外クラス名とエラービュー名の間のマッピングを設定します。例外クラス名は、現在ワイルドカードをサポートしていない部分文字列にすることができます。たとえば、"ServletException" という値は、jakarta.servlet.ServletException およびサブクラスに一致します。

      NB: パターンがどの程度具体的であるか、およびパッケージ情報を含めるかどうか(必須ではありません)を慎重に検討してください。例: 「例外」はほぼすべてに一致し、おそらく他のルールを非表示にします。「例外」がチェックされたすべての例外のルールを定義することを意図している場合、"java.lang.Exception" は正しいでしょう。"BaseBusinessException" などのより珍しい例外名では、FQN を使用する必要はありません。

      パラメーター:
      mappings - キーとしての例外パターン(完全修飾クラス名でも可)、および値としてのエラービュー名
    • setExcludedExceptions

      public void setExcludedExceptions(ClassSE<?>... excludedExceptions)
      例外マッピングから除外する 1 つ以上の例外を設定します。除外された例外が最初にチェックされ、それらのいずれかが実際の例外と等しい場合、例外は未解決のままになります。
      パラメーター:
      excludedExceptions - 1 つ以上の除外された例外型
    • setDefaultErrorView

      public void setDefaultErrorView(StringSE defaultErrorView)
      デフォルトのエラービューの名前を設定します。特定のマッピングが見つからなかった場合、このビューが返されます。

      デフォルトはなしです。

    • setStatusCodes

      public void setStatusCodes(PropertiesSE statusCodes)
      この例外リゾルバーが特定の解決済みエラービューに適用する HTTP ステータスコードを設定します。キーはビュー名です。値はステータスコードです。

      このエラーコードは、トップレベルのリクエストの場合にのみ適用されることに注意してください。HTTP ステータスはインクルード内から変更できないため、インクルードリクエストには設定されません。

      指定しない場合、デフォルトのステータスコードが適用されます。

      関連事項:
    • addStatusCode

      public void addStatusCode(StringSE viewName, int statusCode)
      Java ベースの構成で使用するための setStatusCodes(Properties) の代替。
    • getStatusCodesAsMap

      public MapSE<StringSE,IntegerSE> getStatusCodesAsMap()
      setStatusCodes(Properties) を介して提供される HTTP ステータスコードを返します。キーはビュー名です。値はステータスコードです。
    • setDefaultStatusCode

      public void setDefaultStatusCode(int defaultStatusCode)
      エラービューを解決し、ステータスコードマッピングが定義されていない場合に、この例外リゾルバーが適用するデフォルトの HTTP ステータスコードを設定します。

      このエラーコードは、トップレベルのリクエストの場合にのみ適用されることに注意してください。HTTP ステータスはインクルード内から変更できないため、インクルードリクエストには設定されません。

      指定しない場合、ステータスコードは適用されず、コントローラーまたはビューにそのまま残されるか、サーブレットエンジンのデフォルトの 200(OK)が維持されます。

      パラメーター:
      defaultStatusCode - HTTP ステータスコード値、たとえば 500(HttpServletResponse.SC_INTERNAL_SERVER_ERROREE)または 404 ( HttpServletResponse.SC_NOT_FOUNDEE )
      関連事項:
    • setExceptionAttribute

      public void setExceptionAttribute(@Nullable StringSE exceptionAttribute)
      例外を公開するモデル属性の名前を設定します。デフォルトは「例外」です。

      これは、別の属性名または null に設定して、例外属性をまったく公開しないようにすることができます。

      関連事項:
    • doResolveException

      @Nullable protected ModelAndView doResolveException(HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler, ExceptionSE ex)
      on ハンドラーの実行中にスローされた特定の例外を実際に解決し、必要に応じて特定のエラーページを表す ModelAndView を返します。

      特定の例外チェックを適用するために、サブクラスでオーバーライドされる場合があります。この解決方法が適用されるかどうか確認した後にこのテンプレートメソッドが呼び出されることに注意してください( "mappedHandlers" など)。実装は実際の例外処理を続行できます。

      次で指定:
      クラス AbstractHandlerExceptionResolverdoResolveException 
      パラメーター:
      request - 現在の HTTP リクエスト
      response - 現在の HTTP レスポンス
      handler - 実行されたハンドラー、または例外時に何も選択されなかった場合は null (たとえば、マルチパート解決が失敗した場合)
      ex - ハンドラーの実行中にスローされた例外
      戻り値:
      転送先の対応する ModelAndView、または解決チェーンでのデフォルト処理の場合は null 
    • determineViewName

      @Nullable protected StringSE determineViewName(ExceptionSE ex, HttpServletRequestEE request)
      最初に "excludedExecptions" をチェックしてから "exceptionMappings" を検索し、最後に "defaultErrorView" をフォールバックとして使用して、特定の例外のビュー名を決定します。
      パラメーター:
      ex - ハンドラーの実行中にスローされた例外
      request - 現在の HTTP リクエスト (メタデータの取得に役立ちます)
      戻り値:
      解決されたビュー名、または除外された場合または見つからなかった場合は null 
    • findMatchingViewName

      @Nullable protected StringSE findMatchingViewName(PropertiesSE exceptionMappings, ExceptionSE ex)
      指定された例外マッピングで一致するビュー名を見つけます。
      パラメーター:
      exceptionMappings - 例外クラス名とエラービュー名の間のマッピング
      ex - ハンドラーの実行中にスローされた例外
      戻り値:
      ビュー名、または見つからない場合は null 
      関連事項:
    • getDepth

      protected int getDepth(StringSE exceptionMapping, ExceptionSE ex)
      一致するスーパークラスの深さを返します。

      0 は ex が完全に一致することを意味します。一致するものがない場合、-1 を返します。それ以外の場合、深さを返します。最も低い深度が優先されます。

    • determineStatusCode

      @Nullable protected IntegerSE determineStatusCode(HttpServletRequestEE request, StringSE viewName)
      特定のエラービューに適用する HTTP ステータスコードを決定します。

      デフォルトの実装は、指定されたビュー名(statusCodes プロパティで指定)のステータスコードを返すか、一致しない場合は defaultStatusCode にフォールバックします。

      この動作をカスタマイズするには、カスタムサブクラスでこれをオーバーライドします。

      パラメーター:
      request - 現在の HTTP リクエスト
      viewName - エラービューの名前
      戻り値:
      使用する HTTP ステータスコード、またはサーブレットコンテナーのデフォルトの null (標準エラービューの場合は 200)
      関連事項:
    • applyStatusCodeIfPossible

      protected void applyStatusCodeIfPossible(HttpServletRequestEE request, HttpServletResponseEE response, int statusCode)
      可能であれば(つまり、インクルードリクエスト内で実行されていない場合)、指定された HTTP ステータスコードを指定されたレスポンスに適用します。
      パラメーター:
      request - 現在の HTTP リクエスト
      response - 現在の HTTP レスポンス
      statusCode - 適用するステータスコード
      関連事項:
    • getModelAndView

      protected ModelAndView getModelAndView(StringSE viewName, ExceptionSE ex, HttpServletRequestEE request)
      指定されたリクエスト、ビュー名、例外の ModelAndView を返します。

      デフォルトの実装は getModelAndView(String, Exception) に委譲します。

      パラメーター:
      viewName - エラービューの名前
      ex - ハンドラーの実行中にスローされた例外
      request - 現在の HTTP リクエスト (メタデータの取得に役立ちます)
      戻り値:
      ModelAndView インスタンス
    • getModelAndView

      protected ModelAndView getModelAndView(StringSE viewName, ExceptionSE ex)
      指定されたビュー名と例外の ModelAndView を返します。

      デフォルトの実装では、指定された例外属性が追加されます。サブクラスでオーバーライドできます。

      パラメーター:
      viewName - エラービューの名前
      ex - ハンドラーの実行中にスローされた例外
      戻り値:
      ModelAndView インスタンス
      関連事項: