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 - 带点的变量名的主要内容,如果未能解决你的问题,请参考以下文章