共享变量

优质
小牛编辑
140浏览
2023-12-01

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