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