Поиск хеша в FreeMarker с использованием нотации графа объекта - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть 2 переменные в карте параметров, заполненные тегом struts2, следующим образом:

  1. obj - Java-объект с различными дочерними объектами. Это можно рассматривать как хэш в шаблоне freemarker.
  2. displayProperty - Строка, содержащая имя свойства внутри obj. Имя может быть графом объекта, содержащим несколько уровней детализации.

Я хочу отобразить данное свойство obj с помощью шаблона freemarker. Например, если displayProperty равно entity.name, то оно должно по существу вывести значение obj.entity.name.

Мой шаблон бесплатного маркера ${obj[displayProperty]}, но он не работает, если displayProperty содержит точку.

1 Ответ

0 голосов
/ 21 февраля 2012

Одним из решений будет ('obj.' + displayProperty)?eval, хотя оно включает в себя синтаксический анализ обобщенных выражений и поэтому не является самым быстрым. Самым быстрым решением было бы создать пользовательский метод (TemplateMethodModelEx реализация), который вы могли бы использовать, например ${walkProperty(obj, displayProperty)}, который бы разбивал строку по точкам, и вызывать TempalteHashModel.get в цикле.

...