转义StringTemplate属性/属性名称中的点?

时间:2012-06-07 21:22:29

标签: stringtemplate

我有以下Map,其中包含一些要在模板中使用的属性

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 个答案:

答案 0 :(得分:3)

Difficult Property Names

下查看手册
  

由于与内置关键字的冲突,或者因为它们与字符串模板使用的ID规则不匹配,某些属性名称会导致解析错误。可以通过引用属性名称和间接属性构造来处理这些困难的属性名称:

     

$ person。(“first”)$ ---内置关键字

     

$ person。(“1”)$ ---非ID conforment name

处理地图时很可能会出现困难的属性名称。可以使用任意字符串定义映射键,包括用于定义模板本身的空格和语法字符。

答案 1 :(得分:0)

我想更改分隔符最简单。 StringTemplate在$'中没有转义机制。