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 class freemarker.ext.beans.BeanModel

`object, wrapper`

### Fields inherited from interface freemarker.template.TemplateModel

`NOTHING`

### Fields inherited from interface freemarker.template.TemplateScalarModel

`EMPTY_STRING`

### Constructor Summary

Constructors
Constructor and Description
`CollectionModel(Collection collection, BeansWrapper wrapper)` Creates a new model that wraps the specified collection object.

### Method Summary

All Methods Instance Methods Concrete Methods
`TemplateModel` `get(int index)` Retrieves the i-th object from the collection, wrapped as a TemplateModel.
`boolean` `getSupportsIndexedAccess()` Tells if `get(int)` will always fail for this object.
`TemplateModelIterator` `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, getAdaptedObject, getAPI, 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`

### Constructor Detail

#### CollectionModel

    public CollectionModel(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.

### Method Detail

#### 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, 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 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.

Since:
  2.3.17

#### 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.