容器包括哈希表,序列和集合三种类型。
哈希表
哈希表是实现了 TemplateHashModel
接口的Java对象。TemplateHashModel
有两个方法:
TemplateModel get(String key)
,这个方法根据给定的名称返回子变量,
boolean isEmpty()
,这个方法表明哈希表是否含有子变量。
get
方法当在给定的名称没有找到子变量时返回null。
TemplateHashModelEx
接口扩展了
TemplateHashModel
。它增加了更多的方法,使得可以使用内建函数
values 和
keys 来枚举哈希表中的子变量。
经常使用的实现类是 SimpleHash
,该类实现了
TemplateHashModelEx
接口。从内部来说,它使用一个
java.util.Hash
类型的对象存储子变量。
SimpleHash
类的方法可以添加和移除子变量。
这些方法应该用来在变量被创建之后直接初始化。
在FTL中,容器是一成不变的。那就是说你不能添加,替换和移除容器中的子变量。
序列
序列是实现了 TemplateSequenceModel
接口的Java对象。它包含两个方法:TemplateModel get(int index)
和 int size()
。
经常使用的实现类是 SimpleSequence
。该类内部使用一个
java.util.List
类型的对象存储它的子变量。
SimpleSequence
有添加子元素的方法。
在序列创建之后应该使用这些方法来填充序列。
集合
集合是实现了 TemplateCollectionModel
接口的Java对象。这个接口定义了一个方法:
TemplateModelIterator iterator()
。
TemplateModelIterator
接口和
java.util.Iterator
相似,但是它返回
TemplateModels
而不是 Object
,
而且它能抛出 TemplateModelException
异常。
通常使用的实现类是 SimpleCollection
。