Package freemarker.ext.beans
Class CollectionModel
java.lang.Object
freemarker.ext.beans.BeanModel
freemarker.ext.beans.StringModel
freemarker.ext.beans.CollectionModel
- All Implemented Interfaces:
WrapperTemplateModel
,AdapterTemplateModel
,TemplateCollectionModel
,TemplateHashModel
,TemplateHashModelEx
,TemplateModel
,TemplateModelWithAPISupport
,TemplateScalarModel
,TemplateSequenceModel
public class CollectionModel
extends StringModel
implements TemplateCollectionModel, TemplateSequenceModel
A special case of BeanModel
that can wrap Java collections
and that implements the TemplateCollectionModel
in order to be usable
in a <#list>
block.
-
Field Summary
Fields inherited from interface freemarker.template.TemplateModel
NOTHING
Fields inherited from interface freemarker.template.TemplateScalarModel
EMPTY_STRING
-
Constructor Summary
ConstructorDescriptionCollectionModel(Collection collection, BeansWrapper wrapper)
Creates a new model that wraps the specified collection object. -
Method Summary
Modifier and TypeMethodDescriptionget(int index)
Retrieves the i-th object from the collection, wrapped as a TemplateModel.boolean
Tells ifget(int)
will always fail for this object.iterator()
Retrieves a template model iterator that is used to iterate over the elements in this collection.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, invokeGenericGet, isEmpty, keys, keySet, toString, unwrap, values, wrap
-
Constructor Details
-
CollectionModel
Creates a new model that wraps the specified collection object.- Parameters:
collection
- the collection 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
-
get
Retrieves the i-th object from the collection, wrapped as a TemplateModel.- Specified by:
get
in interfaceTemplateSequenceModel
- Returns:
- the item at the specified index, or
null
if the index is out of bounds. Note that anull
value is interpreted by FreeMarker as "variable does not exist", and accessing a missing variables is usually considered as an error in the FreeMarker Template Language, so the usage of a bad index will not remain hidden, unless the default value for that case was also specified in the template. - Throws:
TemplateModelException
- if the index is out of bounds, or the underlying collection is not a List.
-
getSupportsIndexedAccess
public boolean getSupportsIndexedAccess()Tells ifget(int)
will always fail for this object. As this object implementsTemplateSequenceModel
,get(int)
should always work, but due to a design flaw, for non-List
wrapped objectsget(int)
will always fail. This method exists to ease working this problem around.- Since:
- 2.3.17
-
iterator
Description copied from interface:TemplateCollectionModel
Retrieves a template model iterator that is used to iterate over the elements in this collection.- Specified by:
iterator
in interfaceTemplateCollectionModel
-
size
public int size()- Specified by:
size
in interfaceTemplateHashModelEx
- Specified by:
size
in interfaceTemplateSequenceModel
- Overrides:
size
in classBeanModel
- Returns:
- the number of key/value mappings in the hash.
-