Package freemarker.ext.beans
Class ResourceBundleModel
- java.lang.Object
-
- freemarker.ext.beans.BeanModel
-
- freemarker.ext.beans.ResourceBundleModel
-
- All Implemented Interfaces:
WrapperTemplateModel
,AdapterTemplateModel
,TemplateHashModel
,TemplateHashModelEx
,TemplateMethodModel
,TemplateMethodModelEx
,TemplateModel
,TemplateModelWithAPISupport
public class ResourceBundleModel extends BeanModel implements TemplateMethodModelEx
A hash model that wraps a resource bundle. Makes it convenient to store localized content in the data model. It also acts as a method model that will take a resource key and arbitrary number of arguments and will apply
MessageFormat
with arguments on the string represented by the key.Typical usages:
- bundle.resourceKey will retrieve the object from resource bundle with key resourceKey
- bundle("patternKey", arg1, arg2, arg3) will retrieve the string from resource bundle with key patternKey, and will use it as a pattern for MessageFormat with arguments arg1, arg2 and arg3
-
-
Field Summary
-
Fields inherited from interface freemarker.template.TemplateModel
NOTHING
-
-
Constructor Summary
Constructors Constructor Description ResourceBundleModel(ResourceBundle bundle, BeansWrapper wrapper)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Object
exec(List arguments)
Takes first argument as a resource key, looks up a string in resource bundle with this key, then applies a MessageFormat.format on the string with the rest of the arguments.String
format(String key, Object[] params)
Provides direct access to caching format engine from code (instead of from script).ResourceBundle
getBundle()
protected TemplateModel
invokeGenericGet(Map keyMap, Class clazz, String key)
Overridden to invoke the getObject method of the resource bundle.boolean
isEmpty()
Returns true if this bundle contains no objects.protected Set
keySet()
Helper method to support TemplateHashModelEx.int
size()
-
Methods inherited from class freemarker.ext.beans.BeanModel
get, getAdaptedObject, getAPI, getWrappedObject, hasPlainGetMethod, keys, toString, unwrap, values, wrap
-
-
-
-
Constructor Detail
-
ResourceBundleModel
public ResourceBundleModel(ResourceBundle bundle, BeansWrapper wrapper)
-
-
Method Detail
-
invokeGenericGet
protected TemplateModel invokeGenericGet(Map keyMap, Class clazz, String key) throws TemplateModelException
Overridden to invoke the getObject method of the resource bundle.- Overrides:
invokeGenericGet
in classBeanModel
- Throws:
TemplateModelException
-
isEmpty
public boolean isEmpty()
Returns true if this bundle contains no objects.- Specified by:
isEmpty
in interfaceTemplateHashModel
- Overrides:
isEmpty
in classBeanModel
-
size
public int size()
- Specified by:
size
in interfaceTemplateHashModelEx
- Overrides:
size
in classBeanModel
- Returns:
- the number of key/value mappings in the hash.
-
keySet
protected Set keySet()
Description copied from class:BeanModel
Helper method to support TemplateHashModelEx. Returns the Set of Strings which are available via the TemplateHashModel interface. Subclasses that override invokeGenericGet to provide additional hash keys should also override this method.
-
exec
public Object exec(List arguments) throws TemplateModelException
Takes first argument as a resource key, looks up a string in resource bundle with this key, then applies a MessageFormat.format on the string with the rest of the arguments. The created MessageFormats are cached for later reuse.- Specified by:
exec
in interfaceTemplateMethodModel
- Specified by:
exec
in interfaceTemplateMethodModelEx
- Parameters:
arguments
- aList
ofTemplateModel
-s, containing the arguments passed to the method. If the implementation absolutely wants to operate on POJOs, it can use the static utility methods in theDeepUnwrap
class to easily obtain them. However, unwrapping is not always possible (or not perfectly), and isn't always efficient, so it's recommended to use the originalTemplateModel
value as much as possible.- Returns:
- the return value of the method, or
null
. If the returned value does not implementTemplateModel
, it will be automatically wrapped using theenvironment's object wrapper
. - Throws:
TemplateModelException
-
format
public String format(String key, Object[] params) throws MissingResourceException
Provides direct access to caching format engine from code (instead of from script).- Throws:
MissingResourceException
-
getBundle
public ResourceBundle getBundle()
-
-