Methods
暴露给模板的方法变量实现TemplateMethodModel
接口。它包含一种方法:TemplateModel exec(java.util.List arguments)
。当您使用方法调用表达式调用方法时,将调用exec
方法。 arguments 参数将包含 FTL 方法调用参数的值。 exec
的返回值给出 FTL 方法调用表达式的值。
TemplateMethodModelEx
接口扩展了TemplateMethodModel
。它不添加任何新方法。对象实现此* marker *接口的事实向 FTL 引擎指示应将参数直接作为TemplateModel
-s 放置到java.util.List
中。否则,它们将以String
-s 的形式放在列表中。
出于明显的原因,这些接口没有默认实现。
示例:此方法将返回第一个出现的第一个字符串的第二个字符串内的索引;如果第二个字符串不包含第一个字符串,则返回-1.
public class IndexOfMethod implements TemplateMethodModel {
public TemplateModel exec(List args) throws TemplateModelException {
if (args.size() != 2) {
throw new TemplateModelException("Wrong arguments");
}
return new SimpleNumber(
((String) args.get(1)).indexOf((String) args.get(0)));
}
}
如果您将其实例放入根目录:
root.put("indexOf", new IndexOfMethod());
那么您可以在模板中调用它:
<#assign x = "something">
${indexOf("met", x)}
${indexOf("foo", x)}
然后输出将是:
2
-1
如果您需要访问运行时 FTL 环境(读/写变量,获取当前语言环境等),则可以使用Environment.getCurrentEnvironment()
进行获取。