一些类
-
freemarker.template.ObjectWrapper
将 Java 对象映射到 FTL 的 TemplateModel 中,这决定了哪些 Java 对象可以被 FTL
命令访问,实现了 FTL 的安全沙箱机制。
实现类和子接口
-
freemarker.ext.servlet.FreemarkerServlet#process
处理 http 请求的入口
-
freemarker.template.TemplateModel
FTL 数据类型的通用接口,所有 Java 对象都会映射到这个接口的实现类中,FTL 只会处理
实现该接口的 FTL 数据类型
-
freemarker.template.utility.Execute#exec
使用 new 创建对象
目标对象需要实现 TemplateModel 接口,不能是 BeanModel 的子类,不能是 JythonModel
子类
对象包装
对象包装器是实现了 freemarker.template.ObjectWrapper 接口的类。它的目标是实现
Java 对象和 FTL 类型系统之间的映射。换句话说,它指定了模板如何在数据模型(包含从模板
中调用的 Java 方法的返回值)中发现 Java 对象。对象包装器作为插件放入 Configuration 中,
可以使用 object_wrapper 属性设置 (或者使用 Configuration.setObjectWrapper)。
调用对象包装器的 wrap 方法将一个 Java 类映射成 FTL 类型,最常用的是
DefaultObjectWrapper: