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());
    }
}

шаблон.ftl:

${variable.name}

этот код бросает исключение:

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

можно ли ссылаться на переменную "переменная".имя " в файле tempalte?

2 ответов


это возможно с помощью этого синтаксиса:

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

.data_model - специальная переменная, которую можно использовать для прямого доступа к модели данных.


Это невозможно, так как freemarker будет рассматривать " имя "как свойство "переменной". Поэтому сначала он ищет объект под названием "переменная", которого нет, поскольку он называется "переменной".имя'