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__()
。