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, 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 <foreach> block.
- Version:
- $Id: CollectionModel.java,v 1.22 2003/06/03 13:21:32 szegedia Exp $
- Author:
- Attila Szegedi
Constructor Summary |
CollectionModel(java.util.Collection collection,
BeansWrapper wrapper)
Creates a new model that wraps the specified collection object. |
Methods inherited from class freemarker.ext.beans.BeanModel |
get, getAdaptedObject, getWrappedObject, hasPlainGetMethod, invokeGenericGet, isEmpty, keys, keySet, toString, unwrap, values, wrap |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
CollectionModel
public CollectionModel(java.util.Collection collection,
BeansWrapper wrapper)
- Creates a new model that wraps the specified collection object.
- Parameters:
collection
- the collection object to wrap into a model.wrapper
- the BeansWrapper
associated with this model.
Every model has to have an associated BeansWrapper
instance. The
model gains many attributes from its wrapper, including the caching
behavior, method exposure level, method-over-item shadowing policy etc.
get
public TemplateModel get(int index)
throws TemplateModelException
- Retrieves the i-th object from the collection, wrapped as a TemplateModel.
- Specified by:
get
in interface TemplateSequenceModel
- Returns:
- the item at the specified index, or
null
if
the index is out of bounds. Note that a null
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.
- Throws:
TemplateModelException
- if the index is out of bounds, or the
underlying collection is not a List.
getSupportsIndexedAccess
public boolean getSupportsIndexedAccess()
- Tells if
get(int)
will always fail for this object.
As this object implements TemplateSequenceModel
,
get(int)
should always work, but due to a design flaw, for
non-List
wrapped objects get(int)
will always fail.
This method exists to ease working this problem around.
iterator
public TemplateModelIterator 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 interface TemplateCollectionModel
size
public int size()
- Specified by:
size
in interface TemplateHashModelEx
- Specified by:
size
in interface TemplateSequenceModel
- Overrides:
size
in class BeanModel
- Returns:
- the number of key/value mappings in the hash.