【问题标题】:freemarker - variable name with dotfreemarker - 带点的变量名
【发布时间】: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”?

【问题讨论】:

    标签: java escaping freemarker


    【解决方案1】:

    可以使用这种语法:

    ${.data_model["variable.name"]}
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-28
        • 1970-01-01
        • 2021-03-13
        • 2015-03-26
        • 2016-04-26
        • 1970-01-01
        • 2020-05-13
        • 2010-11-08
        相关资源
        最近更新 更多