public class UrlBasedViewResolver extends ViewResolverSupport implements ViewResolver, ApplicationContextAware, InitializingBean
ViewResolver
。これは、各ビューに専用のマッピングを定義する必要がなく、シンボリック名がビューリソースの名前と簡単に一致する場合に便利です(つまり、シンボリック名はリソースのファイル名の一意の部分です)。FreeMarkerView
のような AbstractUrlBasedView
サブクラスをサポートします。このリゾルバーによって生成されるすべてのビューのビュークラスは、"viewClass" プロパティで指定できます。
ビュー名は、それ自体がリソース URL であるか、指定されたプレフィックスやサフィックスによって拡張されます。RequestContext を保持する属性をすべてのビューにエクスポートすることは明示的にサポートされています。
サンプル: prefix="templates/"、suffix=".ftl"、viewname="test" -> "templates/test.ftl"
特別な機能として、リダイレクト URL は "redirect:" プレフィックスを使用して指定できます。例: "redirect:myAction" は、標準のビュー名として解決するのではなく、指定された URL へのリダイレクトをトリガーします。これは通常、フォームワークフローの終了後にコントローラー URL にリダイレクトするために使用されます。
メモ: このクラスはローカライズされた解決をサポートしません。つまり、現在のロケールに応じて、シンボリックビュー名を別のリソースに解決します。
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | REDIRECT_URL_PREFIX リダイレクト URL を指定する特別なビュー名のプレフィックス(通常は、フォームが送信および処理された後のコントローラーへ)。 |
DEFAULT_CONTENT_TYPE
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
UrlBasedViewResolver() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
protected View | applyLifecycleMethods(StringSE viewName, AbstractUrlBasedView view) 含まれている ApplicationContext のライフサイクルメソッドを特定の View インスタンスに適用します(そのようなコンテキストが利用可能な場合)。 |
protected boolean | canHandle(StringSE viewName, LocaleSE locale) この ViewResolver が指定されたビュー名を処理できるかどうかを示します。 |
protected AbstractUrlBasedView | createView(StringSE viewName) 指定されたビュークラスの新しい View インスタンスを作成して構成します。 |
ApplicationContext | getApplicationContext() 含まれている ApplicationContext があれば、それを返します。 |
protected StringSE | getPrefix() URL を構築するときにビュー名の前に付加されるプレフィックスを返します。 |
protected StringSE | getRequestContextAttribute() すべてのビューの RequestContext 属性があれば、その名前を返します。 |
protected StringSE | getSuffix() URL を構築するときにビュー名に追加されるサフィックスを返します。 |
protected ClassSE<?> | getViewClass() ビューの作成に使用されるビュークラスを返します。 |
protected StringSE[] | getViewNames() この ViewResolver で処理できるビュー名(または名前パターン)を返します。 |
protected ClassSE<?> | requiredViewClass() このリゾルバーに必要なビューの型を返します。 |
reactor.core.publisher.Mono<View> | resolveViewName(StringSE viewName, LocaleSE locale) ビュー名を View インスタンスに解決します。 |
void | setApplicationContext(ApplicationContext applicationContext) 含まれている ApplicationContext があればそれを受け入れます。 |
void | setPrefix(StringSE prefix) URL を作成するときに名前を表示するために付加されるプレフィックスを設定します。 |
void | setRedirectViewProvider(FunctionSE<StringSE, RedirectView> redirectViewProvider) たとえば、リダイレクトビューにカスタムデフォルトステータスコードを提供するために使用できる URL ベースの RedirectView プロバイダー。 |
void | setRequestContextAttribute(StringSE requestContextAttribute) すべてのビューの RequestContext 属性の名前を設定します。 |
void | setSuffix(StringSE suffix) URL を作成するときにビュー名に追加されるサフィックスを設定します。 |
void | setViewClass(ClassSE<?> viewClass) createView(String) を介してインスタンス化するビュークラスを設定します。 |
void | setViewNames(StringSE... viewNames) この ViewResolver で処理できるビュー名(または名前パターン)を設定します。 |
getDefaultCharset, getOrder, getSupportedMediaTypes, setDefaultCharset, setOrder, setSupportedMediaTypes
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setViewClass(@Nullable ClassSE<?> viewClass)
createView(String)
を介してインスタンス化するビュークラスを設定します。viewClass
- デフォルトでは AbstractUrlBasedView である必須のビュークラスに割り当て可能なクラス protected ClassSE<?> requiredViewClass()
AbstractUrlBasedView
を返します。AbstractUrlBasedView
protected StringSE getPrefix()
protected StringSE getSuffix()
public void setViewNames(@Nullable StringSE... viewNames)
ViewResolver
で処理できるビュー名 (または名前パターン) を設定します。ビュー名には単純なワイルドカードを含めることができます。たとえば、"my*"、"*Report"、"*Repo*" はすべてビュー名 "myReport" と一致します。@Nullable protected StringSE[] getViewNames()
ViewResolver
で処理できるビュー名(または名前パターン)を返します。public void setRedirectViewProvider(FunctionSE<StringSE,RedirectView> redirectViewProvider)
RedirectView
プロバイダー。public void setRequestContextAttribute(@Nullable StringSE requestContextAttribute)
RequestContext
属性の名前を設定します。requestContextAttribute
- RequestContext 属性の名前 AbstractView.setRequestContextAttribute(java.lang.String)
@Nullable protected StringSE getRequestContextAttribute()
RequestContext
属性があれば、その名前を返します。public void setApplicationContext(@Nullable ApplicationContext applicationContext)
ApplicationContext
があればそれを受け入れます。 新しく作成された View
インスタンスの初期化、ライフサイクルコールバックの適用、包含環境へのアクセスの提供に使用されます。
ApplicationContextAware
の setApplicationContext
applicationContext
- このオブジェクトによって使用される ApplicationContext オブジェクト setViewClass(java.lang.Class<?>)
, createView(java.lang.String)
, applyLifecycleMethods(java.lang.String, org.springframework.web.reactive.result.view.AbstractUrlBasedView)
@Nullable public ApplicationContext getApplicationContext()
ApplicationContext
があれば、それを返します。public void afterPropertiesSet() throws ExceptionSE
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
ExceptionSE
- 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合 public reactor.core.publisher.Mono<View> resolveViewName(StringSE viewName, LocaleSE locale)
ViewResolver
ViewResolver
の resolveViewName
viewName
- 解決するビューの名前 locale
- リクエストのロケール protected boolean canHandle(StringSE viewName, LocaleSE locale)
ViewResolver
が指定されたビュー名を処理できるかどうかを示します。そうでない場合は、空の結果が返されます。デフォルトの実装では、構成済みの view names
をチェックします。viewName
- 取得するビューの名前 locale
- ビューを取得するロケール PatternMatchUtils.simpleMatch(String, String)
protected AbstractUrlBasedView createView(StringSE viewName)
事前定義されたビューインスタンスのルックアップは実行しません。
Bean コンテナーで定義されている Spring ライフサイクルメソッドは、ここで呼び出す必要はありません。ApplicationContext
が利用可能であれば、後で自動的に適用されます。
viewName
- 構築するビューの名前 getViewClass()
, applyLifecycleMethods(java.lang.String, org.springframework.web.reactive.result.view.AbstractUrlBasedView)
protected View applyLifecycleMethods(StringSE viewName, AbstractUrlBasedView view)
ApplicationContext
のライフサイクルメソッドを特定の View
インスタンスに適用します(そのようなコンテキストが利用可能な場合)。viewName
- ビューの名前 view
- AbstractUrlBasedView
のプロパティで事前設定された、新しく作成された View インスタンス View
インスタンス (オリジナルまたは装飾されたバリアントのいずれか)getApplicationContext()
, ApplicationContext.getAutowireCapableBeanFactory()
, AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String)