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