方法变量在存于实现了 TemplateMethodModel 
		接口的模板中。这个接口包含一个方法:
		TemplateModel exec(java.util.List arguments)。
		当使用 方法调用表达式
		调用方法时,exec 方法将会被调用。
		形参将会包含FTL方法调用形参的值。exec 
		方法的返回值给出了FTL方法调用表达式的返回值。
TemplateMethodModelEx 接口扩展了 
		TemplateMethodModel 接口。它没有添加任何新方法。
		事实上这个对象实现这个 标记 接口是给FTL引擎暗示,
		形式参数应该直接以 TemplateModel 的形式放进 
		java.util.List。否则将会以 
		String 形式放入list。
出于这些很明显的原因,这些接口没有默认的实现。
例如:下面这个方法,返回第一个字符串在第二个字符串第一次出现时的索引位置, 如果第二个字符串中不包含第一个字符串,则返回-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() 来获取。
