クラス SimpleMappingExceptionResolver
- 実装されたすべてのインターフェース:
Ordered
,HandlerExceptionResolver
HandlerExceptionResolver
実装。指定されたハンドラーセットまたは DispatcherServlet 内のすべてのハンドラーのいずれかに対して、例外クラス名をビュー名にマッピングできます。エラービューはエラーページ JSP に類似していますが、チェックされたものを含むあらゆる種類の例外、特定のハンドラーのきめ細かいマッピングで使用できます。
- 導入:
- 22.11.2003
- 作成者:
- Juergen Hoeller, Arjen Poutsma, Rossen Stoyanchev
- 関連事項:
フィールドのサマリー
フィールドクラス org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver から継承されたフィールド
logger
インターフェース org.springframework.core.Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明void
addStatusCode
(StringSE viewName, int statusCode) Java ベースの構成で使用するためのsetStatusCodes(Properties)
の代替。protected void
applyStatusCodeIfPossible
(HttpServletRequestEE request, HttpServletResponseEE response, int statusCode) 可能であれば(つまり、インクルードリクエスト内で実行されていない場合)、指定された HTTP ステータスコードを指定されたレスポンスに適用します。protected IntegerSE
determineStatusCode
(HttpServletRequestEE request, StringSE viewName) 特定のエラービューに適用する HTTP ステータスコードを決定します。protected StringSE
determineViewName
(ExceptionSE ex, HttpServletRequestEE request) 最初に"excludedExecptions"
をチェックしてから"exceptionMappings"
を検索し、最後に"defaultErrorView"
をフォールバックとして使用して、特定の例外のビュー名を決定します。protected ModelAndView
doResolveException
(HttpServletRequestEE request, HttpServletResponseEE response, ObjectSE handler, ExceptionSE ex) on ハンドラーの実行中にスローされた特定の例外を実際に解決し、必要に応じて特定のエラーページを表す ModelAndView を返します。protected StringSE
findMatchingViewName
(PropertiesSE exceptionMappings, ExceptionSE ex) 指定された例外マッピングで一致するビュー名を見つけます。protected int
getDepth
(StringSE exceptionMapping, ExceptionSE ex) 一致するスーパークラスの深さを返します。protected ModelAndView
getModelAndView
(StringSE viewName, ExceptionSE ex) 指定されたビュー名と例外の ModelAndView を返します。protected ModelAndView
getModelAndView
(StringSE viewName, ExceptionSE ex, HttpServletRequestEE request) 指定されたリクエスト、ビュー名、例外の ModelAndView を返します。setStatusCodes(Properties)
を介して提供される HTTP ステータスコードを返します。void
setDefaultErrorView
(StringSE defaultErrorView) デフォルトのエラービューの名前を設定します。void
setDefaultStatusCode
(int defaultStatusCode) エラービューを解決し、ステータスコードマッピングが定義されていない場合に、この例外リゾルバーが適用するデフォルトの HTTP ステータスコードを設定します。void
setExceptionAttribute
(StringSE exceptionAttribute) 例外を公開するモデル属性の名前を設定します。void
setExceptionMappings
(PropertiesSE mappings) 例外クラス名とエラービュー名の間のマッピングを設定します。void
setExcludedExceptions
(ClassSE<?>... excludedExceptions) 例外マッピングから除外する 1 つ以上の例外を設定します。void
setStatusCodes
(PropertiesSE statusCodes) この例外リゾルバーが特定の解決済みエラービューに適用する HTTP ステータスコードを設定します。クラス org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver から継承されたメソッド
addMappedHandlerClass, buildLogMessage, getMappedHandlerClasses, getOrder, hasHandlerMappings, logException, prepareResponse, preventCaching, resolveException, setMappedHandlerClasses, setMappedHandlerPredicate, setMappedHandlers, setOrder, setPreventResponseCaching, setWarnLogCategory, shouldApplyTo
フィールドの詳細
DEFAULT_EXCEPTION_ATTRIBUTE
例外属性のデフォルト名: 「例外」。- 関連事項:
コンストラクターの詳細
SimpleMappingExceptionResolver
public SimpleMappingExceptionResolver()
メソッドの詳細
setExceptionMappings
例外クラス名とエラービュー名の間のマッピングを設定します。例外クラス名は、現在ワイルドカードをサポートしていない部分文字列にすることができます。たとえば、"ServletException" という値は、jakarta.servlet.ServletException
およびサブクラスに一致します。NB: パターンがどの程度具体的であるか、およびパッケージ情報を含めるかどうか(必須ではありません)を慎重に検討してください。例: 「例外」はほぼすべてに一致し、おそらく他のルールを非表示にします。「例外」がチェックされたすべての例外のルールを定義することを意図している場合、"java.lang.Exception" は正しいでしょう。"BaseBusinessException" などのより珍しい例外名では、FQN を使用する必要はありません。
- パラメーター:
mappings
- キーとしての例外パターン(完全修飾クラス名でも可)、および値としてのエラービュー名
setExcludedExceptions
例外マッピングから除外する 1 つ以上の例外を設定します。除外された例外が最初にチェックされ、それらのいずれかが実際の例外と等しい場合、例外は未解決のままになります。- パラメーター:
excludedExceptions
- 1 つ以上の除外された例外型
setDefaultErrorView
デフォルトのエラービューの名前を設定します。特定のマッピングが見つからなかった場合、このビューが返されます。デフォルトはなしです。
setStatusCodes
この例外リゾルバーが特定の解決済みエラービューに適用する HTTP ステータスコードを設定します。キーはビュー名です。値はステータスコードです。このエラーコードは、トップレベルのリクエストの場合にのみ適用されることに注意してください。HTTP ステータスはインクルード内から変更できないため、インクルードリクエストには設定されません。
指定しない場合、デフォルトのステータスコードが適用されます。
addStatusCode
Java ベースの構成で使用するためのsetStatusCodes(Properties)
の代替。getStatusCodesAsMap
setStatusCodes(Properties)
を介して提供される HTTP ステータスコードを返します。キーはビュー名です。値はステータスコードです。setDefaultStatusCode
public void setDefaultStatusCode(int defaultStatusCode) エラービューを解決し、ステータスコードマッピングが定義されていない場合に、この例外リゾルバーが適用するデフォルトの HTTP ステータスコードを設定します。このエラーコードは、トップレベルのリクエストの場合にのみ適用されることに注意してください。HTTP ステータスはインクルード内から変更できないため、インクルードリクエストには設定されません。
指定しない場合、ステータスコードは適用されず、コントローラーまたはビューにそのまま残されるか、サーブレットエンジンのデフォルトの 200(OK)が維持されます。
- パラメーター:
defaultStatusCode
- HTTP ステータスコード値、たとえば 500(HttpServletResponse.SC_INTERNAL_SERVER_ERROR
EE)または 404 (HttpServletResponse.SC_NOT_FOUND
EE )- 関連事項:
setExceptionAttribute
例外を公開するモデル属性の名前を設定します。デフォルトは「例外」です。これは、別の属性名または
null
に設定して、例外属性をまったく公開しないようにすることができます。doResolveException
@Nullable protected ModelAndView doResolveException(HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler, ExceptionSE ex) on ハンドラーの実行中にスローされた特定の例外を実際に解決し、必要に応じて特定のエラーページを表す ModelAndView を返します。特定の例外チェックを適用するために、サブクラスでオーバーライドできます。このテンプレートメソッドは、この解決が適用されるかどうか ( "mappedHandlers" など) を確認した後に呼び出されるため、実装では実際の例外処理をそのまま続行できます。
- 次で指定:
- クラス
AbstractHandlerExceptionResolver
のdoResolveException
- パラメーター:
request
- 現在の HTTP リクエストresponse
- 現在の HTTP レスポンスhandler
- 実行されたハンドラー、または例外時に何も選択されなかった場合はnull
(たとえば、マルチパート解決が失敗した場合)ex
- ハンドラーの実行中にスローされた例外- 戻り値:
- 転送先の対応する
ModelAndView
、または解決チェーンでのデフォルト処理の場合はnull
determineViewName
最初に"excludedExecptions"
をチェックしてから"exceptionMappings"
を検索し、最後に"defaultErrorView"
をフォールバックとして使用して、特定の例外のビュー名を決定します。- パラメーター:
ex
- ハンドラーの実行中にスローされた例外request
- 現在の HTTP リクエスト (メタデータの取得に役立ちます)- 戻り値:
- 解決されたビュー名、または除外された場合または見つからなかった場合は
null
findMatchingViewName
指定された例外マッピングで一致するビュー名を見つけます。- パラメーター:
exceptionMappings
- 例外クラス名とエラービュー名の間のマッピングex
- ハンドラーの実行中にスローされた例外- 戻り値:
- ビュー名、または見つからない場合は
null
- 関連事項:
getDepth
一致するスーパークラスの深さを返します。0 は ex が完全に一致することを意味します。一致するものがない場合、-1 を返します。それ以外の場合、深さを返します。最も低い深度が優先されます。
determineStatusCode
特定のエラービューに適用する 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
指定されたビュー名と例外の ModelAndView を返します。デフォルトの実装では、指定された例外属性が追加されます。サブクラスでオーバーライドできます。
- パラメーター:
viewName
- エラービューの名前ex
- ハンドラーの実行中にスローされた例外- 戻り値:
- ModelAndView インスタンス
- 関連事項: