Shared variables
(共享变量)是为所有模板定义的变量。可以使用
setSharedVariable
方法向配置中添加共享变量:
Configuration cfg = new Configuration(Configuration.VERSION_2_3_22); ... cfg.setSharedVariable("warp", new WarpDirective()); cfg.setSharedVariable("company", "Foo Inc.");
在所有使用这个配置的模板中,名为 wrap
的用户自定义指令和一个名为 company
的字符串将会在数据模型的根root上可见,
那就不用在根哈希表上一次又一次的添加它们。在传递给
Template.process
的
根root对象里的变量将会隐藏同名的共享变量。
Warning!
如果配置对象在多线程环境中使用,不要使用
TemplateModel
实现类来作为共享变量,
因为它是不是线程安全的!
这也是基于Servlet应用程序的典型情形。
出于向后兼容的特性,共享变量的集合初始化时
(就是对于新的 Configuration
实例来说)不能为空。
它包含下列用户自定义指令(用户自定义指令使用时需要用
@
来代替#
):
名称 | 类 |
---|---|
capture_output |
freemarker.template.utility.CaptureOutput |
compress |
freemarker.template.utility.StandardCompress |
html_escape |
freemarker.template.utility.HtmlEscape |
normalize_newlines |
freemarker.template.utility.NormalizeNewlines |
xml_escape |
freemarker.template.utility.XmlEscape |