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 будет рассматривать " имя "как свойство "переменной". Поэтому сначала он ищет объект под названием "переменная", которого нет, поскольку он называется "переменной".имя'