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 java.lang.String | REDIRECT_URL_PREFIX リダイレクト URL を指定する特別なビュー名のプレフィックス(通常は、フォームが送信および処理された後のコントローラーへ)。 |
DEFAULT_CONTENT_TYPE
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
UrlBasedViewResolver() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
protected View | applyLifecycleMethods(java.lang.String viewName, AbstractUrlBasedView view) 含まれている ApplicationContext のライフサイクルメソッドを特定の View インスタンスに適用します(そのようなコンテキストが利用可能な場合)。 |
protected boolean | canHandle(java.lang.String viewName, java.util.Locale locale) この ViewResolver が指定されたビュー名を処理できるかどうかを示します。 |
protected AbstractUrlBasedView | createView(java.lang.String viewName) 指定されたビュークラスの新しい View インスタンスを作成して構成します。 |
ApplicationContext | getApplicationContext() 含まれている ApplicationContext があれば、それを返します。 |
protected java.lang.String | getPrefix() URL を構築するときにビュー名の前に付加されるプレフィックスを返します。 |
protected java.lang.String | getRequestContextAttribute() すべてのビューの @link RequestContext} 属性の名前を返します(ある場合)。 |
protected java.lang.String | getSuffix() URL を構築するときにビュー名に追加されるサフィックスを返します。 |
protected java.lang.Class<?> | getViewClass() ビューの作成に使用されるビュークラスを返します。 |
protected java.lang.String[] | getViewNames() この ViewResolver で処理できるビュー名(または名前パターン)を返します。 |
protected java.lang.Class<?> | requiredViewClass() このリゾルバーに必要なビューの型を返します。 |
reactor.core.publisher.Mono<View> | resolveViewName(java.lang.String viewName, java.util.Locale locale) ビュー名を View インスタンスに解決します。 |
void | setApplicationContext(ApplicationContext applicationContext) 含まれている ApplicationContext があればそれを受け入れます。 |
void | setPrefix(java.lang.String prefix) URL を作成するときに名前を表示するために付加されるプレフィックスを設定します。 |
void | setRedirectViewProvider(java.util.function.Function<java.lang.String,RedirectView> redirectViewProvider) たとえば、リダイレクトビューにカスタムデフォルトステータスコードを提供するために使用できる URL ベースの RedirectView プロバイダー。 |
void | setRequestContextAttribute(java.lang.String requestContextAttribute) すべてのビューの RequestContext 属性の名前を設定します。 |
void | setSuffix(java.lang.String suffix) URL を作成するときにビュー名に追加されるサフィックスを設定します。 |
void | setViewClass(java.lang.Class<?> viewClass) createView(String) を介してインスタンス化するビュークラスを設定します。 |
void | setViewNames(java.lang.String... viewNames) この ViewResolver で処理できるビュー名(または名前パターン)を設定します。 |
getDefaultCharset, getOrder, getSupportedMediaTypes, setDefaultCharset, setOrder, setSupportedMediaTypes
public static final java.lang.String REDIRECT_URL_PREFIX
public void setViewClass(@Nullable java.lang.Class<?> viewClass)
createView(String)
を介してインスタンス化するビュークラスを設定します。viewClass
- デフォルトでは AbstractUrlBasedView である必須のビュークラスに割り当て可能なクラス @Nullable protected java.lang.Class<?> getViewClass()
protected java.lang.Class<?> requiredViewClass()
AbstractUrlBasedView
を返します。AbstractUrlBasedView
public void setPrefix(@Nullable java.lang.String prefix)
protected java.lang.String getPrefix()
public void setSuffix(@Nullable java.lang.String suffix)
protected java.lang.String getSuffix()
public void setViewNames(@Nullable java.lang.String... viewNames)
ViewResolver
で処理できるビュー名 (または名前パターン) を設定します。ビュー名には単純なワイルドカードを含めることができます。たとえば、"my*"、"*Report"、"*Repo*" はすべてビュー名 "myReport" と一致します。@Nullable protected java.lang.String[] getViewNames()
ViewResolver
で処理できるビュー名(または名前パターン)を返します。public void setRedirectViewProvider(java.util.function.Function<java.lang.String,RedirectView> redirectViewProvider)
RedirectView
プロバイダー。public void setRequestContextAttribute(@Nullable java.lang.String requestContextAttribute)
RequestContext
属性の名前を設定します。requestContextAttribute
- RequestContext 属性の名前 AbstractView.setRequestContextAttribute(java.lang.String)
@Nullable protected java.lang.String getRequestContextAttribute()
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 java.lang.Exception
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
java.lang.Exception
- 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合 public reactor.core.publisher.Mono<View> resolveViewName(java.lang.String viewName, java.util.Locale locale)
ViewResolver
ViewResolver
の resolveViewName
viewName
- 解決するビューの名前 locale
- リクエストのロケール protected boolean canHandle(java.lang.String viewName, java.util.Locale locale)
ViewResolver
が指定されたビュー名を処理できるかどうかを示します。そうでない場合は、空の結果が返されます。デフォルトの実装では、構成済みの view names
をチェックします。viewName
- 取得するビューの名前 locale
- ビューを取得するロケール PatternMatchUtils.simpleMatch(String, String)
protected AbstractUrlBasedView createView(java.lang.String viewName)
Bean コンテナーで定義されている Spring ライフサイクルメソッドは、ここで呼び出す必要はありません。ApplicationContext
が利用可能であれば、後で自動的に適用されます。
viewName
- 構築するビューの名前 getViewClass()
, applyLifecycleMethods(java.lang.String, org.springframework.web.reactive.result.view.AbstractUrlBasedView)
protected View applyLifecycleMethods(java.lang.String viewName, AbstractUrlBasedView view)
ApplicationContext
のライフサイクルメソッドを特定の View
インスタンスに適用します(そのようなコンテキストが利用可能な場合)。viewName
- ビューの名前 view
- AbstractUrlBasedView
のプロパティで事前設定された、新しく作成された View インスタンス View
インスタンス (オリジナルまたは装飾されたバリアントのいずれか)getApplicationContext()
, ApplicationContext.getAutowireCapableBeanFactory()
, AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String)