Избежать точки в имени атрибута / свойства 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 не имеет механизма выхода внутри $.

Другие вопросы по тегам