2014-03-28 38 views
8

是否可以在freemarker模板中引用包含點的變量? (或 ' - ' 字符)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()); 
    } 
} 

template.ftl:

${variable.name} 

此代碼拋出異常:

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

是否可以參考tempalte文件中的變量「variable.name」?

回答

13

這是可能的語法如下:

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

.data_model是一個特殊變量您可以使用直接訪問數據模型。

0

這是不可能的,因爲freemarker會將'name'視爲'variable'的屬性。因此,它正在尋找所謂的「變量」第一個對象,這是不存在的,因爲它被命名爲「variable.name」