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.
