|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.context.support.ApplicationObjectSupport org.springframework.web.context.support.WebApplicationObjectSupport org.springframework.web.servlet.view.AbstractCachingViewResolver org.springframework.web.servlet.view.ResourceBundleViewResolver
public class ResourceBundleViewResolver
ViewResolver
implementation
that uses bean definitions in a ResourceBundle
, specified by
the bundle basename.
The bundle is typically defined in a properties file, located in the class path. The default bundle basename is "views".
This ViewResolver
supports localized view definitions,
using the default support of PropertyResourceBundle
.
For example, the basename "views" will be resolved as class path resources
"views_de_AT.properties", "views_de.properties", "views.properties" -
for a given Locale "de_AT".
Note: this ViewResolver
implements the Ordered
interface to allow for flexible participation in ViewResolver
chaining. For example, some special views could be defined via this
ViewResolver
(giving it 0 as "order" value), while all
remaining views could be resolved by a UrlBasedViewResolver
.
ResourceBundle.getBundle(java.lang.String)
,
PropertyResourceBundle
,
UrlBasedViewResolver
Field Summary | |
---|---|
static String |
DEFAULT_BASENAME
The default basename if no other basename is supplied. |
Fields inherited from class org.springframework.context.support.ApplicationObjectSupport |
---|
logger |
Fields inherited from interface org.springframework.core.Ordered |
---|
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE |
Constructor Summary | |
---|---|
ResourceBundleViewResolver()
|
Method Summary | |
---|---|
void |
destroy()
Close the bundle bean factories on context shutdown. |
protected ResourceBundle |
getBundle(String basename,
Locale locale)
Obtain the resource bundle for the given basename and Locale . |
protected ClassLoader |
getBundleClassLoader()
Return the ClassLoader to load resource bundles with. |
int |
getOrder()
Return the order value of this object, with a higher value meaning greater in terms of sorting. |
protected BeanFactory |
initFactory(Locale locale)
Initialize the BeanFactory from the ResourceBundle ,
for the given locale . |
protected View |
loadView(String viewName,
Locale locale)
Subclasses must implement this method. |
void |
setBasename(String basename)
Set the basename, as defined in the ResourceBundle
documentation. |
void |
setBasenames(String[] basenames)
Set multiple ResourceBundle basenames. |
void |
setBundleClassLoader(ClassLoader classLoader)
Set the ClassLoader to load resource bundles with. |
void |
setDefaultParentView(String defaultParentView)
Set the default parent for views defined in the ResourceBundle . |
void |
setOrder(int order)
|
Methods inherited from class org.springframework.web.servlet.view.AbstractCachingViewResolver |
---|
clearCache, createView, getCacheKey, isCache, removeFromCache, resolveViewName, setCache |
Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport |
---|
getServletContext, getTempDir, getWebApplicationContext, isContextRequired, setServletContext |
Methods inherited from class org.springframework.context.support.ApplicationObjectSupport |
---|
getApplicationContext, getMessageSourceAccessor, initApplicationContext, requiredContextClass, setApplicationContext |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String DEFAULT_BASENAME
Constructor Detail |
---|
public ResourceBundleViewResolver()
Method Detail |
---|
public void setOrder(int order)
public int getOrder()
Ordered
Normally starting with 0 or 1, with Ordered.LOWEST_PRECEDENCE
indicating greatest. Same order values will result in arbitrary
positions for the affected objects.
Higher value can be interpreted as lower priority, consequently the first object has highest priority (somewhat analogous to Servlet "load-on-startup" values).
Note that order values below 0 are reserved for framework purposes. Application-specified values should always be 0 or greater, with only framework components (internal or third-party) supposed to use lower values.
getOrder
in interface Ordered
Ordered.LOWEST_PRECEDENCE
public void setBasename(String basename)
ResourceBundle
documentation.
ResourceBundle
supports different suffixes. For example,
a base name of "views" might map to ResourceBundle
files
"views", "views_en_au" and "views_de".
The default is "views".
basename
- the ResourceBundle
basenamesetBasenames(java.lang.String[])
,
ResourceBundle
public void setBasenames(String[] basenames)
ResourceBundle
basenames.
basenames
- multiple ResourceBundle
basenamessetBasename(java.lang.String)
public void setBundleClassLoader(ClassLoader classLoader)
ClassLoader
to load resource bundles with.
Default is the thread context ClassLoader
.
classLoader
- the ClassLoader
to load resource bundles withprotected ClassLoader getBundleClassLoader()
ClassLoader
to load resource bundles with.
Default is the specified bundle ClassLoader
,
usually the thread context ClassLoader
.
ClassLoader
to load resource bundles withpublic void setDefaultParentView(String defaultParentView)
ResourceBundle
.
This avoids repeated "yyy1.(parent)=xxx", "yyy2.(parent)=xxx" definitions in the bundle, especially if all defined views share the same parent.
The parent will typically define the view class and common attributes. Concrete views might simply consist of an URL definition then: a la "yyy1.url=/my.jsp", "yyy2.url=/your.jsp".
View definitions that define their own parent or carry their own class can still override this. Strictly speaking, the rule that a default parent setting does not apply to a bean definition that carries a class is there for backwards compatiblity reasons. It still matches the typical use case.
defaultParentView
- the default parent viewprotected View loadView(String viewName, Locale locale) throws Exception
AbstractCachingViewResolver
Not all subclasses may support internationalization: A subclass that doesn't can simply ignore the locale parameter.
NOTE: As of Spring 1.2, subclasses are supposed to fully initialize the View objects before returning them, also applying bean container initialization callbacks.
loadView
in class AbstractCachingViewResolver
viewName
- the name of the view to retrievelocale
- the Locale to retrieve the view for
null
if not found
(optional, to allow for ViewResolver chaining)
Exception
- if the view couldn't be resolvedAbstractCachingViewResolver.resolveViewName(java.lang.String, java.util.Locale)
protected BeanFactory initFactory(Locale locale) throws Exception
BeanFactory
from the ResourceBundle
,
for the given locale
.
Synchronized because of access by parallel threads.
locale
- the target Locale
Exception
protected ResourceBundle getBundle(String basename, Locale locale) throws MissingResourceException
Locale
.
basename
- the basename to look forlocale
- the Locale
to look for
ResourceBundle
MissingResourceException
- if no matching bundle could be foundResourceBundle.getBundle(String, java.util.Locale, ClassLoader)
public void destroy() throws BeansException
destroy
in interface DisposableBean
BeansException
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |