2014-03-28 22 views
8

Kann man eine Variable, die einen Punkt in einer Freemarker-Vorlage enthält, referenzieren? (Oder '-' Zeichen)Freimarker - Variablenname mit Punkt

zB:

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} 

Dieser Code löst eine Ausnahme:

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

Ist es möglich, die Variable "variable.name" in der Tempalte-Datei?

Antwort

13

Es ist möglich, mit dieser Syntax:

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

.data_model ist eine spezielle Variable Sie können direkt auf das Datenmodell zugreifen.

0

Dies ist nicht möglich, da freemarker 'name' als eine Eigenschaft von 'variable' behandelt. So ist es für ein Objekt sucht erster ‚Variable‘ genannt, was nicht da ist, wie es genannt wird ‚variable.name‘