容器包括哈希表,序列和集合三种类型。
哈希表
哈希表是实现了 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。