CollectionModel (FreeMarker 2.3.35 API)
Description: declaration: package: freemarker.ext.beans, class: CollectionModel

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 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
  Description
  `CollectionModel​(Collection collection, BeansWrapper wrapper)`
  Creates a new model that wraps the specified collection object.

- ## Method Summary

  Modifier and Type
  Method
  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, get, getAdaptedObject, getAPI, getBeforeMethodCall, 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 Details

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

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