クラス ContentNegotiatingViewResolver

実装されたすべてのインターフェース:
AwareInitializingBeanApplicationContextAwareOrderedServletContextAwareViewResolver

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 のリクエストも同じ結果になります。

導入:
3.0
作成者:
Arjen Poutsma, Juergen Hoeller, Rossen Stoyanchev
関連事項:
  • コンストラクターの詳細

    • ContentNegotiatingViewResolver

      public ContentNegotiatingViewResolver()
  • メソッドの詳細

    • setContentNegotiationManager

      public void setContentNegotiationManager(@Nullable ContentNegotiationManager contentNegotiationManager)
      リクエストされたメディア型を判別するために使用する ContentNegotiationManager を設定します。

      設定されていない場合、ContentNegotiationManager のデフォルトのコンストラクターが使用され、HeaderContentNegotiationStrategy が適用されます。

      関連事項:
    • getContentNegotiationManager

      @Nullable public ContentNegotiationManager 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

      public void setDefaultViews(ListSE<View> defaultViews)
      ViewResolver チェーンからより具体的なビューを取得できない場合に使用するデフォルトのビューを設定します。
    • getDefaultViews

      public ListSE<View> getDefaultViews()
    • setViewResolvers

      public void setViewResolvers(ListSE<ViewResolver> viewResolvers)
      このビューリゾルバーによってラップされるビューリゾルバーを設定します。

      このプロパティが設定されていない場合、ビューリゾルバーは自動的に検出されます。

    • getViewResolvers

      public ListSE<ViewResolver> getViewResolvers()
    • setOrder

      public void setOrder(int order)
    • getOrder

      public int getOrder()
      インターフェースからコピーされた説明: Ordered
      このオブジェクトの順序値を取得します。

      値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット load-on-startup の値に多少似ています)。

      同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。

      次で指定:
      インターフェース OrderedgetOrder 
      戻り値:
      オーダー額
      関連事項:
    • initServletContext

      protected void initServletContext(ServletContextEE servletContext)
      クラスからコピーされた説明: WebApplicationObjectSupport
      サブクラスは、このアプリケーションオブジェクトが実行される ServletContext に基づいて、カスタム初期化のためにこれをオーバーライドできます。

      デフォルトの実装は空です。WebApplicationObjectSupport.initApplicationContext(org.springframework.context.ApplicationContext) および WebApplicationObjectSupport.setServletContext(jakarta.servlet.ServletContext) によって呼び出されます。

      オーバーライド:
      クラス WebApplicationObjectSupportinitServletContext 
      パラメーター:
      servletContext - このアプリケーションオブジェクトが実行される ServletContext (非 null)
    • afterPropertiesSet

      public void afterPropertiesSet()
      インターフェースからコピーされた説明: InitializingBean
      すべての Bean プロパティを設定し、BeanFactoryAwareApplicationContextAware などを満たした後、包含 BeanFactory によって呼び出されます。

      このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。

      次で指定:
      インターフェース InitializingBeanafterPropertiesSet 
    • resolveViewName

      @Nullable public View resolveViewName(StringSE viewName, LocaleSE locale) throws ExceptionSE
      インターフェースからコピーされた説明: ViewResolver
      指定されたビューを名前で解決します。

      メモ: ViewResolver チェーンを可能にするために、指定された名前のビューが定義されていない場合、ViewResolver は null を返す必要があります。ただし、これは必須ではありません: 一部の ViewResolvers は、常に指定された名前のビューオブジェクトを構築しようとし、null を返すことができません(ビューの作成が失敗した場合は例外をスローします)。

      次で指定:
      インターフェース ViewResolverresolveViewName 
      パラメーター:
      viewName - 解決するビューの名前
      locale - ビューを解決するロケール。国際化をサポートする ViewResolvers はこれを考慮する必要があります。
      戻り値:
      View オブジェクト。見つからない場合は null (ViewResolver チェーニングを可能にするオプション)
      例外:
      ExceptionSE - ビューを解決できない場合 (通常、実際の View オブジェクトの作成に問題がある場合)
    • getMediaTypes

      @Nullable protected ListSE<MediaType> getMediaTypes(HttpServletRequestEE request)
      指定された HttpServletRequestEEMediaType のリストを決定します。
      パラメーター:
      request - 現在のサーブレットリクエスト
      戻り値:
      リクエストされたメディア型のリスト(存在する場合)