クラス ContentNegotiatingViewResolver
- 実装されているすべてのインターフェース:
Aware、InitializingBean、ApplicationContextAware、Ordered、ServletContextAware、ViewResolver
Accept ヘッダーに基づいてビューを解決する ViewResolver の実装。ContentNegotiatingViewResolver はビュー自体を解決しませんが、他の ViewResolvers に委譲します。デフォルトでは、これらの他のビューリゾルバーはアプリケーションコンテキストから自動的に取得されますが、viewResolvers プロパティを使用して明示的に設定することもできます。このビューリゾルバーが正しく機能するためには、order プロパティを他よりも高い優先順位に設定する必要があることに注意してください (デフォルトは Ordered.HIGHEST_PRECEDENCE です)。
このビューリゾルバーは、リクエストされたメディア型を使用して、リクエストに適した View を選択します。リクエストされたメディア型は、設定された ContentNegotiationManager によって決定されます。リクエストされたメディア型が決定されると、このリゾルバーは各デリゲートビューリゾルバーに View を照会し、リクエストされたメディア型がビューのコンテンツ型と互換性があるかどうかを判断します。最も互換性のあるビューが返されます。
さらに、このビューリゾルバーは defaultViews プロパティを公開し、ビューリゾルバーによって提供されるビューをオーバーライドできるようにします。これらのデフォルトのビューは候補として提供されており、コンテンツ型をリクエストする必要があることに注意してください(ファイル拡張子、パラメーター、Accept ヘッダーを介して、上記で説明)。
例: リクエストパスが /view.html の場合、このビューリゾルバーは(html ファイル拡張子に基づいて) text/html コンテンツ型のビューを探します。text/html リクエストの Accept ヘッダーを持つ /view のリクエストも同じ結果になります。
- 導入:
- 3.0
- 作成者:
- Arjen Poutsma, Juergen Hoeller, Rossen Stoyanchev
- 関連事項:
フィールドのサマリー
クラス org.springframework.context.support.ApplicationObjectSupport から継承されたフィールド
loggerインターフェース org.springframework.core.Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCEコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明voidリクエストされたメディア型を判別するために使用するContentNegotiationManagerを返します。getMediaTypes(HttpServletRequestEE request) 指定されたHttpServletRequestEE のMediaTypeのリストを決定します。intgetOrder()このオブジェクトの順序値を取得します。protected voidinitServletContext(ServletContextEE servletContext) サブクラスは、このアプリケーションオブジェクトが実行される ServletContext に基づいて、カスタム初期化のためにこれをオーバーライドできます。boolean適切なものが見つからない場合に HTTP ステータス 406 を返すかどうか。resolveViewName(StringSE viewName, LocaleSE locale) 指定されたビューを名前で解決します。voidsetContentNegotiationManager(ContentNegotiationManager contentNegotiationManager) リクエストされたメディア型を判別するために使用するContentNegotiationManagerを設定します。voidsetDefaultViews(ListSE<View> defaultViews) ViewResolverチェーンからより具体的なビューを取得できない場合に使用するデフォルトのビューを設定します。voidsetOrder(int order) voidsetUseNotAcceptableStatusCode(boolean useNotAcceptableStatusCode) 適切なビューが見つからない場合に406 Not AcceptableEE ステータスコードを返すかどうかを指定します。voidsetViewResolvers(ListSE<ViewResolver> viewResolvers) このビューリゾルバーによってラップされるビューリゾルバーを設定します。クラス org.springframework.web.context.support.WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, isContextRequired, setServletContextクラス org.springframework.context.support.ApplicationObjectSupport から継承されたメソッド
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
コンストラクターの詳細
ContentNegotiatingViewResolver
public ContentNegotiatingViewResolver()
メソッドの詳細
setContentNegotiationManager
public void setContentNegotiationManager(@Nullable ContentNegotiationManager contentNegotiationManager) リクエストされたメディア型を判別するために使用するContentNegotiationManagerを設定します。設定されていない場合、ContentNegotiationManager のデフォルトのコンストラクターが使用され、
HeaderContentNegotiationStrategyが適用されます。getContentNegotiationManager
リクエストされたメディア型を判別するために使用するContentNegotiationManagerを返します。- 導入:
- 4.1.9
setUseNotAcceptableStatusCode
public void setUseNotAcceptableStatusCode(boolean useNotAcceptableStatusCode) 適切なビューが見つからない場合に406 Not AcceptableEE ステータスコードを返すかどうかを指定します。デフォルトは
falseです。つまり、許容できるビューが見つからない場合、このビューリゾルバーはresolveViewName(String, Locale)に対してnullを返します。これにより、ビューリゾルバーの連鎖が可能になります。このプロパティがtrueに設定されている場合、resolveViewName(String, Locale)はレスポンスステータスを406 Not Acceptableに設定するビューでレスポンスします。isUseNotAcceptableStatusCode
public boolean isUseNotAcceptableStatusCode()適切なものが見つからない場合に HTTP ステータス 406 を返すかどうか。setDefaultViews
ViewResolverチェーンからより具体的なビューを取得できない場合に使用するデフォルトのビューを設定します。getDefaultViews
setViewResolvers
このビューリゾルバーによってラップされるビューリゾルバーを設定します。このプロパティが設定されていない場合、ビューリゾルバーは自動的に検出されます。
getViewResolvers
setOrder
public void setOrder(int order) getOrder
public int getOrder()インターフェースからコピーされた説明:Orderedこのオブジェクトの順序値を取得します。値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット
load-on-startupの値に多少似ています)。同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
initServletContext
クラスからコピーされた説明:WebApplicationObjectSupportサブクラスは、このアプリケーションオブジェクトが実行される ServletContext に基づいて、カスタム初期化のためにこれをオーバーライドできます。デフォルトの実装は空です。
WebApplicationObjectSupport.initApplicationContext(org.springframework.context.ApplicationContext)およびWebApplicationObjectSupport.setServletContext(jakarta.servlet.ServletContext)によって呼び出されます。- オーバーライド:
- クラス
WebApplicationObjectSupportのinitServletContext - パラメーター:
servletContext- このアプリケーションオブジェクトが実行される ServletContext (非null)
afterPropertiesSet
public void afterPropertiesSet()インターフェースからコピーされた説明:InitializingBeanすべての Bean プロパティを設定し、BeanFactoryAware、ApplicationContextAwareなどを満たした後、包含BeanFactoryによって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet
resolveViewName
インターフェースからコピーされた説明:ViewResolver指定されたビューを名前で解決します。メモ: ViewResolver チェーンを可能にするために、指定された名前のビューが定義されていない場合、ViewResolver は
nullを返す必要があります。ただし、これは必須ではありません: 一部の ViewResolvers は、常に指定された名前のビューオブジェクトを構築しようとし、nullを返すことができません(ビューの作成が失敗した場合は例外をスローします)。- 次で指定:
- インターフェース
ViewResolverのresolveViewName - パラメーター:
viewName- 解決するビューの名前locale- ビューを解決するロケール。国際化をサポートする ViewResolvers はこれを考慮する必要があります。- 戻り値:
- View オブジェクト。見つからない場合は
null(ViewResolver チェーニングを可能にするオプション) - 例外:
ExceptionSE- ビューを解決できない場合 (通常、実際の View オブジェクトの作成に問題がある場合)
getMediaTypes
指定されたHttpServletRequestEE のMediaTypeのリストを決定します。- パラメーター:
request- 現在のサーブレットリクエスト- 戻り値:
- リクエストされたメディア型のリスト(存在する場合)