クラス UrlBasedViewResolver

実装されたすべてのインターフェース:
AwareApplicationContextAwareOrderedServletContextAwareViewResolver
既知の直属サブクラス
AbstractTemplateViewResolverInternalResourceViewResolverScriptTemplateViewResolverXsltViewResolver

public class UrlBasedViewResolver extends AbstractCachingViewResolver implements Ordered
ViewResolver インターフェースの単純な実装。明示的なマッピング定義なしで、シンボリックビュー名を URL に直接解決できます。これは、シンボリック名がビューリソースの名前と簡単に一致する場合(つまり、シンボリック名がリソースのファイル名の一意の部分である場合)に役立ちます。各ビューに専用のマッピングを定義する必要はありません。

InternalResourceViewFreeMarkerView などの AbstractUrlBasedView サブクラスをサポートします。このリゾルバーによって生成されるすべてのビューのビュークラスは、"viewClass" プロパティを介して指定できます。

ビュー名は、それ自体がリソース URL であるか、指定されたプレフィックスやサフィックスによって拡張されます。RequestContext を保持する属性をすべてのビューにエクスポートすることは明示的にサポートされています。

サンプル: prefix="/WEB-INF/jsp/"、suffix=".jsp"、viewname="test" → "/WEB-INF/jsp/test.jsp"

特別な機能として、リダイレクト URL は "redirect:" プレフィックスを介して指定できます。例: "redirect:myAction" は、標準のビュー名としての解決ではなく、指定された URL へのリダイレクトをトリガーします。これは通常、フォームワークフローの終了後にコントローラー URL にリダイレクトするために使用されます。

さらに、"forward:" 接頭辞を使用して転送 URL を指定できます。例: "forward:myAction" は、標準のビュー名としての解決ではなく、指定された URL への転送をトリガーします。これは通常、コントローラーの URL に使用されます。JSP URL での使用は想定されていません。そこでは論理ビュー名を使用してください。

メモ: このクラスはローカライズされた解決をサポートしません。つまり、現在のロケールに応じて、シンボリックビュー名を別のリソースに解決します。

: ViewResolvers をチェーンする場合、UrlBasedViewResolver は、指定されたリソースが実際に存在するかどうかを確認します。ただし、InternalResourceView では、通常、ターゲットリソースの存在を事前に判断することはできません。このようなシナリオでは、UrlBasedViewResolver は常に、指定されたビュー名のビューを返します。チェーン の最後の ViewResolver として構成する必要があります。

導入:
13.12.2003
作成者:
Juergen Hoeller, Rob Harrop, Sam Brannen
関連事項:
  • フィールドの詳細

    • REDIRECT_URL_PREFIX

      public static final StringSE REDIRECT_URL_PREFIX
      リダイレクト URL を指定する特別なビュー名のプレフィックス(通常は、フォームが送信および処理された後のコントローラーへ)。このようなビュー名は、構成されたデフォルトの方法では解決されず、特別なショートカットとして扱われます。
      関連事項:
    • FORWARD_URL_PREFIX

      public static final StringSE FORWARD_URL_PREFIX
      転送 URL を指定する特別なビュー名のプレフィックス(通常、フォームが送信および処理された後のコントローラーへ)。このようなビュー名は、構成されたデフォルトの方法では解決されず、特別なショートカットとして扱われます。
      関連事項:
  • コンストラクターの詳細

    • UrlBasedViewResolver

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

    • setViewClass

      public void setViewClass(@Nullable ClassSE<?> viewClass)
      ビューの作成に使用するビュークラスを設定します。
      パラメーター:
      viewClass - 必要なビュークラスに割り当て可能なクラス (デフォルト: AbstractUrlBasedView)
      関連事項:
    • getViewClass

      @Nullable protected ClassSE<?> getViewClass()
      ビューの作成に使用されるビュークラスを返します。
      関連事項:
    • setPrefix

      public void setPrefix(@Nullable StringSE prefix)
      URL を作成するときに名前を表示するために付加されるプレフィックスを設定します。
    • getPrefix

      protected StringSE getPrefix()
      URL を構築するときにビュー名の前に付加されるプレフィックスを返します。
    • setSuffix

      public void setSuffix(@Nullable StringSE suffix)
      URL を作成するときにビュー名に追加されるサフィックスを設定します。
    • getSuffix

      protected StringSE getSuffix()
      URL を構築するときにビュー名に追加されるサフィックスを返します。
    • setContentType

      public void setContentType(@Nullable StringSE contentType)
      すべてのビューのコンテンツ型を設定します。

      ビュー自体がコンテンツ型を設定すると想定される場合、ビュークラスによって無視される場合があります。JSP の場合。

    • getContentType

      @Nullable protected StringSE getContentType()
      存在する場合、すべてのビューのコンテンツ型を返します。
    • setRedirectContextRelative

      public void setRedirectContextRelative(boolean redirectContextRelative)
      スラッシュ("/")で始まる特定のリダイレクト URL を、現在の ServletContext を基準として、つまり Web アプリケーションのルートを基準として解釈するかどうかを設定します。

      デフォルトは「true」: スラッシュで始まるリダイレクト URL は、Web アプリケーションのルートを基準にして解釈されます。つまり、コンテキストパスが URL の前に付加されます。

      リダイレクト URL は、"redirect:" 接頭辞を使用して指定できます。例: "redirect:myAction"

      関連事項:
    • isRedirectContextRelative

      protected boolean isRedirectContextRelative()
      スラッシュ("/")で始まる所定のリダイレクト URL を、現在の ServletContext を基準として、つまり Web アプリケーションのルートを基準として解釈するかどうかを返します。
    • setRedirectHttp10Compatible

      public void setRedirectHttp10Compatible(boolean redirectHttp10Compatible)
      リダイレクトが HTTP 1.0 クライアントとの互換性を維持するかどうかを設定します。

      デフォルトの実装では、これにより HTTP ステータスコード 302 が強制されます。つまり、HttpServletResponse.sendRedirect に委譲されます。これをオフにすると、HTTP 1.1 クライアントの正しいコードである HTTP ステータスコード 303 が送信されますが、HTTP 1.0 クライアントでは認識されません。

      多くの HTTP 1.1 クライアントは、302 を 303 のように扱い、違いはありません。ただし、POST リクエストの後でリダイレクトする場合、一部のクライアントは 303 に依存します。このようなシナリオでは、このフラグをオフにしてください。

      リダイレクト URL は、"redirect:" 接頭辞を使用して指定できます。例: "redirect:myAction"

      関連事項:
    • isRedirectHttp10Compatible

      protected boolean isRedirectHttp10Compatible()
      リダイレクトが HTTP 1.0 クライアントとの互換性を維持する必要があるかどうかを返します。
    • setRedirectHosts

      public void setRedirectHosts(@Nullable StringSE... redirectHosts)
      アプリケーションに関連付けられた 1 つ以上のホストを構成します。他のすべてのホストは外部ホストと見なされます。

      実際、このプロパティは、ホストがあり、そのホストが既知のホストとしてリストされていない URL に対して、HttpServletResponse.encodeRedirectURL(java.lang.String)EE を介したリダイレクトでエンコーディングをオフにする方法を提供します。

      設定されていない場合(デフォルト)、すべての URL がレスポンスを通じてエンコードされます。

      パラメーター:
      redirectHosts - 1 つ以上のアプリケーションホスト
      導入:
      4.3
    • getRedirectHosts

      @Nullable public StringSE[] getRedirectHosts()
      リダイレクトの目的で、構成されたアプリケーションホストを返します。
      導入:
      4.3
    • setRequestContextAttribute

      public void setRequestContextAttribute(@Nullable StringSE requestContextAttribute)
      すべてのビューの RequestContext 属性の名前を設定します。
      パラメーター:
      requestContextAttribute - RequestContext 属性の名前
      関連事項:
    • getRequestContextAttribute

      @Nullable protected StringSE getRequestContextAttribute()
      存在する場合、すべてのビューの RequestContext 属性の名前を返します。
    • setAttributes

      public void setAttributes(PropertiesSE props)
      このリゾルバーによって返されるすべてのビューに対して、java.util.Properties オブジェクトから静的属性を設定します。

      これは、静的属性を設定する最も便利な方法です。同じ名前の値がモデルに含まれている場合、静的属性は動的属性によってオーバーライドされることに注意してください。

      文字列 "value" (PropertiesEditor で解析)または XML Bean 定義の "props" 要素を入力できます。

      関連事項:
    • setAttributesMap

      public void setAttributesMap(@Nullable MapSE<StringSE,?> attributes)
      このリゾルバーによって返されるすべてのビューに対して、マップから静的属性を設定します。これにより、Bean 参照など、あらゆる種類の属性値を設定できます。

      XML Bean 定義の「マップ」または "props" 要素を取り込むことができます。

      パラメーター:
      attributes - キーとして名前文字列、値として属性オブジェクトを持つマップ
      関連事項:
    • getAttributesMap

      public MapSE<StringSE,ObjectSE> getAttributesMap()
      特定のエントリを追加または上書きするオプションを使用して、このリゾルバーによって返されるビューの静的属性への Map アクセスを許可します。

      attributesMap[myKey] などを介してエントリを直接指定する場合に便利です。これは、子ビュー定義のエントリを追加またはオーバーライドする場合に特に便利です。

    • setExposePathVariables

      public void setExposePathVariables(@Nullable BooleanSE exposePathVariables)
      このリゾルバーによって解決されるビューがモデルにパス変数を追加するかどうかを指定します。

      デフォルト設定では、各ビューに決定を任せます(AbstractView.setExposePathVariables(boolean) を参照)。ただし、このプロパティを使用してそれをオーバーライドできます。

      パラメーター:
      exposePathVariables -
      • true - このリゾルバーによって解決されたすべてのビューはパス変数を公開します
      • false - このリゾルバーによって解決されたビューはパス変数を公開しません
      • null - 個々のビューは自分で決めることができます (これはデフォルトで使用されます)
      関連事項:
    • getExposePathVariables

      @Nullable protected BooleanSE getExposePathVariables()
      このリゾルバーによって解決されたビューがモデルにパス変数を追加する必要があるかどうかを返します。
    • setExposeContextBeansAsAttributes

      public void setExposeContextBeansAsAttributes(boolean exposeContextBeansAsAttributes)
      属性がアクセスされたら、遅延チェックを通じて、アプリケーションコンテキスト内のすべての Spring Bean をリクエスト属性としてアクセス可能にするかどうかを設定します。

      これにより、JSTL の c:out 値式と同様に、JSP 2.0 ページのプレーンな ${...} 式でそのようなすべての Bean にアクセスできるようになります。

      デフォルトは「false」。

      関連事項:
    • getExposeContextBeansAsAttributes

      @Nullable protected BooleanSE getExposeContextBeansAsAttributes()
    • setExposedContextBeanNames

      public void setExposedContextBeanNames(@Nullable StringSE... exposedContextBeanNames)
      公開することになっているコンテキスト内の Bean の名前を指定します。これが null 以外の場合、指定された Bean のみが属性として公開できます。
      関連事項:
    • getExposedContextBeanNames

      @Nullable protected StringSE[] getExposedContextBeanNames()
    • setViewNames

      public void setViewNames(@Nullable StringSE... viewNames)
      この ViewResolver で処理できるビュー名(または名前パターン)を設定します。ビュー名には、"my *"、"* Report"、"* Repo *" がすべてビュー名 "myReport" と一致するような単純なワイルドカードを含めることができます。
      関連事項:
    • getViewNames

      @Nullable protected StringSE[] getViewNames()
      この ViewResolver で処理できるビュー名(または名前パターン)を返します。
    • setOrder

      public void setOrder(int order)
      この ViewResolver Bean の順序値を指定します。

      デフォルト値は Ordered.LOWEST_PRECEDENCE で、順序なしを意味します。

      関連事項:
    • getOrder

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

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

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

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

      protected void initApplicationContext()
      クラスからコピーされた説明: ApplicationObjectSupport
      サブクラスは、カスタム初期化動作のためにこれをオーバーライドできます。

      デフォルトの実装は空です。ApplicationObjectSupport.initApplicationContext(ApplicationContext) によって呼び出されます。

      オーバーライド:
      クラス ApplicationObjectSupportinitApplicationContext 
      関連事項:
    • getCacheKey

      protected ObjectSE getCacheKey(StringSE viewName, LocaleSE locale)
      この ViewResolver はローカライズされた解決をサポートしていないため、この実装はビュー名のみを返します。
      オーバーライド:
      クラス AbstractCachingViewResolvergetCacheKey 
    • createView

      @Nullable protected View createView(StringSE viewName, LocaleSE locale) throws ExceptionSE
      "redirect:" プレフィックスのチェックを実装するためにオーバーライドされます。

      loadView では不可能です。サブクラスでオーバーライドされた loadView バージョンは、常に必要なビュークラスのインスタンスを作成するスーパークラスに依存している可能性があるためです。

      オーバーライド:
      クラス AbstractCachingViewResolvercreateView 
      パラメーター:
      viewName - 取得するビューの名前
      locale - ビューを取得するロケール
      戻り値:
      View インスタンス。見つからない場合は null (ViewResolver チェーニングを可能にするオプション)
      例外:
      ExceptionSE - ビューを解決できなかった場合
      関連事項:
    • canHandle

      protected boolean canHandle(StringSE viewName, LocaleSE locale)
      この ViewResolver が指定されたビュー名を処理できるかどうかを示します。そうでない場合、createView(String, java.util.Locale) は null を返します。デフォルトの実装は、構成された view names をチェックします。
      パラメーター:
      viewName - 取得するビューの名前
      locale - ビューを取得するロケール
      戻り値:
      このリゾルバーが指定されたビューに適用されるかどうか
      関連事項:
    • requiredViewClass

      protected ClassSE<?> requiredViewClass()
      このリゾルバーに必要なビューの型を返します。この実装は AbstractUrlBasedView を返します。
      関連事項:
    • instantiateView

      protected AbstractUrlBasedView instantiateView()
      指定されたビュークラスをインスタンス化します。

      デフォルトの実装では、リフレクションを使用してクラスをインスタンス化します。

      戻り値:
      ビュークラスの新しいインスタンス
      導入:
      5.3
      関連事項:
    • loadView

      @Nullable protected View loadView(StringSE viewName, LocaleSE locale) throws ExceptionSE
      指定されたビュークラスの新しいインスタンスを作成するための buildView にデリゲートします。次の Spring ライフサイクルメソッドを適用します(一般的な Spring Bean ファクトリでサポートされています)。
      • ApplicationContextAware の setApplicationContext
      • InitializingBean の afterPropertiesSet
      次で指定:
      クラス AbstractCachingViewResolverloadView 
      パラメーター:
      viewName - 取得するビューの名前
      locale - ビューを取得するロケール
      戻り値:
      ビューインスタンス
      例外:
      ExceptionSE - ビューを解決できなかった場合
      関連事項:
    • buildView

      protected AbstractUrlBasedView buildView(StringSE viewName) throws ExceptionSE
      指定されたビュークラスの新しい View インスタンスを作成して構成します。事前定義されたビューインスタンスのルックアップを実行しません

      Bean コンテナーで定義されている Spring ライフサイクルメソッドをここで呼び出す必要はありません。これらは、このメソッドが戻った後に loadView メソッドによって適用されます。

      サブクラスは通常、super.buildView(viewName) を最初に呼び出してから、さらにプロパティを設定します。loadView は、このプロセスの最後に Spring ライフサイクルメソッドを適用します。

      パラメーター:
      viewName - 構築するビューの名前
      戻り値:
      ビューインスタンス
      例外:
      ExceptionSE - ビューを解決できなかった場合
      関連事項:
    • applyLifecycleMethods

      protected View applyLifecycleMethods(StringSE viewName, AbstractUrlBasedView view)
      含まれている ApplicationContext のライフサイクルメソッドを特定の View インスタンスに適用します(そのようなコンテキストが利用可能な場合)。
      パラメーター:
      viewName - ビューの名前
      view - AbstractUrlBasedView のプロパティで事前設定された、新しく作成された View インスタンス
      戻り値:
      使用する View インスタンス (オリジナルまたは装飾されたバリアントのいずれか)
      導入:
      5.0
      関連事項: