On this page
Jython wrapper
Page Contents
freemarker.ext.jython包包含使任何 Jython 对象都可以用作TemplateModel的模型。在最基本的情况下,您只需调用
public TemplateModel wrap(Object obj);
freemarker.ext.jython.JythonWrapper类的方法。此方法会将传递的对象包装到适当的TemplateModel中。下面是返回的模型包装器属性的摘要。假设为进行以下讨论,在模板模型根目录中,由对对象obj的JythonWrapper调用生成的模型命名为model。
TemplateHashModel functionality
PyDictionary和PyStringMap将被包装到哈希模型中。键查找 Map 到__finditem__方法;如果未找到项目,则返回None的模型。
TemplateScalarModel functionality
每个 python 对象都将实现TemplateScalarModel,该对象的getAsString()方法仅委托给toString()。
TemplateBooleanModel functionality
每个 python 对象都将实现TemplateBooleanModel,该对象的getAsBoolean()方法根据 true/false 的 Python 语义简单地委派给__nonzero__()。
TemplateNumberModel functionality
PyInteger,PyLong和PyFloat对象的模型包装器实现TemplateNumberModel,其getAsNumber()方法返回__tojava__(java.lang.Number.class)。
TemplateSequenceModel functionality
所有扩展PySequence的类的模型包装器都将实现TemplateSequenceModel,因此可以使用model[i]语法通过索引访问它们的元素,该语法将委派给__finditem__(i)。您还可以使用model?size内置查询数组的长度或列表的大小,这将委派给__len__()。