public class ResourceBundleViewResolver extends AbstractCachingViewResolver implements Ordered, InitializingBean, DisposableBean
ResourceBundle
SE の Bean 定義を使用する ViewResolver
実装。バンドルは通常、クラスパスにあるプロパティファイルで定義されます。デフォルトのバンドルベース名は「ビュー」です。
この ViewResolver
は、PropertyResourceBundle
SE のデフォルトのサポートを使用して、ローカライズされたビュー定義をサポートします。例: ベース名 "views" は、特定のロケール "de_AT" のクラスパスリソース "views_de_AT.properties"、"views_de.properties"、"views.properties" として解決されます。
メモ: この ViewResolver
は、ViewResolver
チェーンへの柔軟な参加を可能にするために、Ordered
インターフェースを実装しています。例: 一部の特別なビューは、この ViewResolver
( "order" 値として 0 を指定)を介して定義できますが、残りのすべてのビューは UrlBasedViewResolver
によって解決できます。
ResourceBundle.getBundle(java.lang.String)
SE, PropertyResourceBundle
SE, UrlBasedViewResolver
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | DEFAULT_BASENAME 他のベース名が指定されていない場合のデフォルトのベース名。 |
DEFAULT_CACHE_LIMIT
logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
ResourceBundleViewResolver() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() 必要に応じて、ロケールを積極的に初期化します。 |
void | destroy() コンテキストシャットダウン時にバンドルビューファクトリを閉じます。 |
protected ResourceBundleSE | getBundle(StringSE basename, LocaleSE locale) 指定されたベース名と Locale SE のリソースバンドルを取得します。 |
protected ClassLoaderSE | getBundleClassLoader() リソースバンドルをロードする ClassLoader SE を返します。 |
int | getOrder() このオブジェクトの順序値を取得します。 |
protected BeanFactory | initFactory(LocaleSE locale) |
protected View | loadView(StringSE viewName, LocaleSE locale) サブクラスはこのメソッドを実装して、指定されたビューの View オブジェクトを構築する必要があります。 |
void | setBasename(StringSE basename) ResourceBundle SE の規則に従って、単一のベース名を設定します。 |
void | setBasenames(StringSE... basenames) ベース名の配列を設定します。それぞれは ResourceBundle SE の規則に従います。 |
void | setBundleClassLoader(ClassLoaderSE classLoader) リソースバンドルをロードする ClassLoader SE を設定します。 |
void | setDefaultParentView(StringSE defaultParentView) ResourceBundle で定義されたビューのデフォルトの親を設定します。 |
void | setLocalesToInitialize(LocaleSE... localesToInitialize) Locales を指定すると、実際にアクセスされたときに遅延ではなく、積極的に初期化されます。 |
void | setOrder(int order) この ViewResolver Bean の順序値を指定します。 |
clearCache, createView, getCacheKey, getCacheLimit, isCache, isCacheUnresolved, removeFromCache, resolveViewName, setCache, setCacheLimit, setCacheUnresolved
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setBasename(StringSE basename)
ResourceBundle
SE の規則に従って、単一のベース名を設定します。デフォルトは「ビュー」です。ResourceBundle
は、さまざまなロケールサフィックスをサポートしています。例: "views" のベース名は、ResourceBundle
ファイル "views"、"views_en_au"、"views_de" にマップされる場合があります。
ResourceBundle 名は事実上クラスパスの場所であることに注意してください。その結果、JDK の標準 ResourceBundle はドットをパッケージ区切り文字として扱います。これは、"test.theme" は、プログラムによる java.util.ResourceBundle
の使用と同様に、実質的に「テスト / テーマ」と同等であることを意味します。
public void setBasenames(StringSE... basenames)
ResourceBundle
SE の規則に従います。デフォルトは、単一のベース名 "views" です。ResourceBundle
は、さまざまなロケールサフィックスをサポートしています。例: "views" のベース名は、ResourceBundle
ファイル "views"、"views_en_au"、"views_de" にマップされる場合があります。
関連するリソースバンドルは、メッセージコードを解決するときに順次チェックされます。順次ルックアップのため、 前のリソースバンドルのメッセージ定義は、後のバンドルのメッセージ定義をオーバーライドすることに注意してください。
ResourceBundle 名は事実上クラスパスの場所であることに注意してください。その結果、JDK の標準 ResourceBundle はドットをパッケージ区切り文字として扱います。これは、"test.theme" は、プログラムによる java.util.ResourceBundle
の使用と同様に、実質的に「テスト / テーマ」と同等であることを意味します。
public void setBundleClassLoader(ClassLoaderSE classLoader)
ClassLoader
SE を設定します。デフォルトはスレッドコンテキスト ClassLoader
です。protected ClassLoaderSE getBundleClassLoader()
ClassLoader
SE を返します。 デフォルトは指定されたバンドル ClassLoader
で、通常はスレッドコンテキスト ClassLoader
です。
public void setDefaultParentView(StringSE defaultParentView)
ResourceBundle
で定義されたビューのデフォルトの親を設定します。これにより、特に定義されたすべてのビューが同じ親を共有する場合に、バンドル内の「yyy1。(parent)= xxx」、「yyy2。(parent)= xxx」の定義が繰り返されるのを防ぎます。
親は通常、ビュークラスと共通の属性を定義します。具象ビューは単に URL 定義で構成される場合があります: "yyy1.url =/my.jsp"、"yyy2.url =/your.jsp"。
独自の親を定義する、または独自のクラスを持つビュー定義は、これをオーバーライドできます。厳密に言うと、デフォルトの親設定がクラスを保持する Bean 定義に適用されないというルールは、下位互換性のためにあります。それでも、通常の使用例と一致します。
public void setLocalesToInitialize(LocaleSE... localesToInitialize)
一般的なロケールの事前初期化を可能にし、それらのロケールのビュー構成を先行してチェックします。
public void setOrder(int order)
デフォルト値は Ordered.LOWEST_PRECEDENCE
で、順序なしを意味します。
Ordered.getOrder()
public int getOrder()
Ordered
値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット load-on-startup
の値に多少似ています)。
同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
Ordered
の getOrder
Ordered.HIGHEST_PRECEDENCE
, Ordered.LOWEST_PRECEDENCE
public void afterPropertiesSet() throws BeansException
InitializingBean
の afterPropertiesSet
BeansException
setLocalesToInitialize(java.util.Locale...)
protected View loadView(StringSE viewName, LocaleSE locale) throws ExceptionSE
AbstractCachingViewResolver
サブクラスは国際化をサポートすることを強制されません: 単にロケールパラメーターを無視しないサブクラス。
AbstractCachingViewResolver
の loadView
viewName
- 取得するビューの名前 locale
- ビューを取得するロケール null
(ViewResolver チェーニングを可能にするオプション)ExceptionSE
- ビューを解決できなかった場合 AbstractCachingViewResolver.resolveViewName(java.lang.String, java.util.Locale)
protected BeanFactory initFactory(LocaleSE locale) throws BeansException
locale
- ターゲット Locale
BeansException
- 初期化エラーの場合 protected ResourceBundleSE getBundle(StringSE basename, LocaleSE locale) throws MissingResourceExceptionSE
Locale
SE のリソースバンドルを取得します。basename
- 検索するベース名 locale
- 検索する Locale
ResourceBundle
MissingResourceExceptionSE
- 一致するバンドルが見つからなかった場合 ResourceBundle.getBundle(String, Locale, ClassLoader)
SEpublic void destroy() throws BeansException
DisposableBean
の destroy
BeansException