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
, BeanNameViewResolver
logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
ContentNegotiatingViewResolver() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
ContentNegotiationManager | getContentNegotiationManager() リクエストされたメディア型を判別するために使用する ContentNegotiationManager を返します。 |
ListSE<View> | getDefaultViews() |
protected ListSE<MediaType> | getMediaTypes(HttpServletRequestEE request) 指定された HttpServletRequest EE の 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 Acceptable EE ステータスコードを返すかどうかを指定します。 |
void | setViewResolvers(ListSE<ViewResolver> viewResolvers) このビューリゾルバーによってラップされるビューリゾルバーを設定します。 |
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, isContextRequired, setServletContext
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setContentNegotiationManager(@Nullable ContentNegotiationManager contentNegotiationManager)
ContentNegotiationManager
を設定します。 設定されていない場合、ContentNegotiationManager のデフォルトのコンストラクターが使用され、HeaderContentNegotiationStrategy
が適用されます。
@Nullable public ContentNegotiationManager getContentNegotiationManager()
ContentNegotiationManager
を返します。public void setUseNotAcceptableStatusCode(boolean useNotAcceptableStatusCode)
406 Not Acceptable
EE ステータスコードを返すかどうかを指定します。 デフォルトは 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_PRECEDENCE
protected void initServletContext(ServletContextEE servletContext)
WebApplicationObjectSupport
デフォルトの実装は空です。WebApplicationObjectSupport.initApplicationContext(org.springframework.context.ApplicationContext)
および WebApplicationObjectSupport.setServletContext(javax.servlet.ServletContext)
によって呼び出されます。
WebApplicationObjectSupport
の initServletContext
servletContext
- このアプリケーションオブジェクトが実行される ServletContext (非 null
)public void afterPropertiesSet()
InitializingBean
BeanFactoryAware
、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)
HttpServletRequest
EE の MediaType
のリストを決定します。request
- 現在のサーブレットリクエスト