CollectionModel (FreeMarker 2.3.23 API)
Date: 2015-07-05

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
    Modifier and Type | Method and Description
    --- | ---
    `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.