Containers

These are hashes, sequences, and collections.

Hashes

Hashes are java objects that implement TemplateHashModel interface. TemplateHashModel contains two methods: TemplateModel get(String key), which returns the subvariable of the given name, and boolean isEmpty(), which indicates if the hash has zero subvariable or not. The get method returns null if no subvariable with the given name exists.

The TemplateHashModelEx interface extends TemplateHashModel. It adds methods by which values and keys built-ins can enumerate the sub variables of the hash.

The commonly used implementation is SimpleHash, which implements TemplateHashModelEx. Internally it uses a java.util.Hash to store the sub variables. SimpleHash has methods by which you can add and remove subvariable. These methods should be used to initialize the variable directly after its creation.

Containers are immutable within FTL. That is, you can't add, replace or remove the sub variables they contain.

Sequences

Sequences are java objects that implement TemplateSequenceModel. It contains two methods: TemplateModel get(int index) and int size().

The commonly used implementation is SimpleSequence. It uses internally a java.util.List to store its sub variables. SimpleSequence has methods by which you can add sub variables. These methods should be used to populate the sequence directly after its creation.

Collections

Collections are java objects that implement the TemplateCollectionModel interface. That interface has one method: TemplateModelIterator iterator(). The TemplateModelIterator interface is similar to java.util.Iterator, but it returns TemplateModels instead of Object-s, and it can throw TemplateModelExceptions.

The commonly used implementation is SimpleCollection.