Jython wrapper

Page Contents

freemarker.ext.jython包包含使任何 Jython 对象都可以用作TemplateModel的模型。在最基本的情况下,您只需调用

public TemplateModel wrap(Object obj);

freemarker.ext.jython.JythonWrapper类的方法。此方法会将传递的对象包装到适当的TemplateModel中。下面是返回的模型包装器属性的摘要。假设为进行以下讨论,在模板模型根目录中,由对对象objJythonWrapper调用生成的模型命名为model

TemplateHashModel functionality

PyDictionaryPyStringMap将被包装到哈希模型中。键查找 Map 到__finditem__方法;如果未找到项目,则返回None的模型。

TemplateScalarModel functionality

每个 python 对象都将实现TemplateScalarModel,该对象的getAsString()方法仅委托给toString()

TemplateBooleanModel functionality

每个 python 对象都将实现TemplateBooleanModel,该对象的getAsBoolean()方法根据 true/false 的 Python 语义简单地委派给__nonzero__()

TemplateNumberModel functionality

PyIntegerPyLongPyFloat对象的模型包装器实现TemplateNumberModel,其getAsNumber()方法返回__tojava__(java.lang.Number.class)

TemplateSequenceModel functionality

所有扩展PySequence的类的模型包装器都将实现TemplateSequenceModel,因此可以使用model[i]语法通过索引访问它们的元素,该语法将委派给__finditem__(i)。您还可以使用model?size内置查询数组的长度或列表的大小,这将委派给__len__()