Package freemarker.ext.beans
Class MapModel
java.lang.Object
freemarker.ext.beans.BeanModel
freemarker.ext.beans.StringModel
freemarker.ext.beans.MapModel
- All Implemented Interfaces:
WrapperTemplateModel
,AdapterTemplateModel
,TemplateHashModel
,TemplateHashModelEx
,TemplateMethodModel
,TemplateMethodModelEx
,TemplateModel
,TemplateModelWithAPISupport
,TemplateScalarModel
A special case of BeanModel
that adds implementation
for TemplateMethodModelEx
on map objects that is a shortcut for the
Map.get()
method. Note that if the passed argument itself is a
reflection-wrapper model, then the map lookup will be performed using the
wrapped object as the key. Note that you can call get()
using the
map.key
syntax inherited from BeanModel
as well,
however in that case the key is always a string.
The class itself does not implement the TemplateCollectionModel
.
You can, however use map.entrySet()
, map.keySet()
, or
map.values()
to obtain TemplateCollectionModel
instances for
various aspects of the map.
-
Field Summary
Fields inherited from interface freemarker.template.TemplateModel
NOTHING
Fields inherited from interface freemarker.template.TemplateScalarModel
EMPTY_STRING
-
Constructor Summary
ConstructorDescriptionMapModel(Map map, BeansWrapper wrapper)
Creates a new model that wraps the specified map object. -
Method Summary
Modifier and TypeMethodDescriptionThe first argument is used as a key to call the map'sget
method.protected TemplateModel
invokeGenericGet(Map keyMap, Class clazz, String key)
Overridden to invoke the generic get method by casting to Map instead of through reflection - should yield better performance.boolean
isEmpty()
Tells whether the model is empty.protected Set
keySet()
Helper method to support TemplateHashModelEx.int
size()
Methods inherited from class freemarker.ext.beans.StringModel
getAsString
Methods inherited from class freemarker.ext.beans.BeanModel
get, get, getAdaptedObject, getAPI, getBeforeMethodCall, getWrappedObject, hasPlainGetMethod, keys, toString, unwrap, values, wrap
-
Constructor Details
-
MapModel
Creates a new model that wraps the specified map object.- Parameters:
map
- the map object to wrap into a model.wrapper
- theBeansWrapper
associated with this model. Every model has to have an associatedBeansWrapper
instance. The model gains many attributes from its wrapper, including the caching behavior, method exposure level, method-over-item shadowing policy etc.
-
-
Method Details
-
exec
The first argument is used as a key to call the map'sget
method.- 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
-
invokeGenericGet
protected TemplateModel invokeGenericGet(Map keyMap, Class clazz, String key) throws TemplateModelExceptionOverridden to invoke the generic get method by casting to Map instead of through reflection - should yield better performance.- Overrides:
invokeGenericGet
in classBeanModel
- Throws:
TemplateModelException
-
isEmpty
public boolean isEmpty()Description copied from class:BeanModel
Tells whether the model is empty. It is empty if either the wrapped object is null, or it's a Boolean with false value.- 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
Description copied from class:BeanModel
Helper method to support TemplateHashModelEx. Returns the Set of Strings which are available via the TemplateHashModel interface. Subclasses that overrideinvokeGenericGet
to provide additional hash keys should also override this method.
-