1

テンプレートで使用するいくつかの属性を含む次のマップがあります

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$) のエスケープも機能しないようです。ドキュメントは、これがどのように、または可能かについての手がかりを提供していないようです。

区切り文字をドット以外のものに変更する必要がありますか?

4

2 に答える 2

3

マニュアルを一瞥すると、これはDifficult Property Namesでカバーされています。

一部のプロパティ名は、組み込みのキーワードと衝突したり、文字列テンプレートで使用される ID のルールと一致しないために、解析エラーを引き起こします。これらの難しいプロパティ名は、プロパティ名を間接的なプロパティ構造と組み合わせて引用することで対処できます。

$person.("first")$ --- キーワードを組み込む

$person.("1")$ --- 非 ID 適合名

マップを扱う場合、難しいプロパティ名が発生する可能性が非常に高くなります。マップ キーは、テンプレート自体を定義するために使用されるスペースや構文文字を含む、任意の文字列を使用して定義できます。

于 2012-06-07T22:27:53.850 に答える
0

区切り文字を変更するのが最も簡単だと思います。StringTemplate には、$ 内にエスケープ メカニズムがありません。

于 2012-06-07T21:25:49.487 に答える