Избежать точки в имени атрибута / свойства StringTemplate?
У меня есть следующая карта с некоторыми атрибутами для использования в шаблоне
Map<String,String> attributes = new HashMap<String,String>();
attributes.put("attr1.val","foo");
attributes.put("attr2.val","bar");
В шаблоне, если я ссылаюсь на них следующим образом:
<b>$attr1.val$: $attr2.val$</b>
StringTemplate предполагает, что я разыменовываю свойство на attr1. Спасаясь от точки ($attr1\.val$
Кажется, тоже не работает. Документация не дает подсказки о том, как или возможно ли это.
Должен ли я просто изменить свой разделитель на что-то, кроме точки?
2 ответа
Взглянув на руководство, оно описано в разделе " Сложные имена свойств":
Некоторые имена свойств вызывают ошибки синтаксического анализа из-за столкновений со встроенными ключевыми словами или из-за того, что они не соответствуют правилам для идентификаторов, которые используются в шаблоне строк. С этими трудными именами свойств можно разобраться, заключив в кавычки имя свойства в сочетании с конструкцией косвенного свойства:
$ person. ("first") $ --- встроить в ключевое слово
$person.("1")$ --- имя не идентификатора соответствия
Сложные имена свойств могут возникнуть при работе с картами. Ключи карты могут быть определены с использованием произвольных строк, включая пробелы и синтаксические символы, используемые для определения самих шаблонов.
Я думаю, что изменение разделителя будет проще всего. StringTemplate не имеет механизма выхода внутри $.