freemarker - 带点的变量名

Posted

技术标签:

【中文标题】freemarker - 带点的变量名【英文标题】:freemarker - variable name with dot 【发布时间】:2014-05-08 05:18:55 【问题描述】:

是否可以在 freemarker 模板中引用包含点的变量? (或“-”字符)

例如:

Main.java:

public class Main 
    public static void main(String[] args) throws IOException, TemplateException 
        Configuration freemarkerConfig = new Configuration();
        freemarkerConfig.setClassForTemplateLoading(Main.class, "");
        Template template = freemarkerConfig.getTemplate("template.ftl");

        Map<String, String> data = new HashMap<String, String>();
        data.put("variable.name", "value");

        Writer out = new StringWriter();
        template.process(data, out);
        System.out.println(out.toString());
    

模板.ftl:

$variable.name

这段代码抛出异常:

The following has evaluated to null or missing:
==> variable  [in template "template.ftl" at line 1, column 3]

是否可以在模板文件中引用变量“variable.name”?

【问题讨论】:

【参考方案1】:

可以使用这种语法:

$.data_model["variable.name"]

.data_model 是一个特殊变量,可用于直接访问数据模型。

【讨论】:

【参考方案2】:

这是不可能的,因为 freemarker 会将“名称”视为“变量”的属性。所以它首先在寻找一个名为“variable”的对象,它不存在,因为它被命名为“variable.name”

【讨论】:

以上是关于freemarker - 带点的变量名的主要内容,如果未能解决你的问题,请参考以下文章

动态 Freemarker 变量名

Spring Boot 初体验(10)使用使用freemarker

Freemarker 模板语言中的变量名

带点的哈希表键

python模块与包

带点的按钮分页