2

Javaの文字列でAntのような変数を展開するための優れたテンプレートエンジンまたは短いコードを探しています。例:

String result = expand ("${firstName} ${familyName}", map);

少なくともサポートする必要java.util.Mapがありますが、Bean、再帰的なルックアップ、またはマップ/オブジェクトのリストでのルックアップを処理できるものも歓迎されます。

提案?

[編集]TofuBeerへの返信:ネストなし、内の有効なJava識別子のみ{}。それ以外の${}ものは逐語的にコピーする必要があります。単一に拡張する$$必要があります(表現できるように)。$``. If that's not possible ${dollar}$15.00 $

4

3 に答える 3

5

Commons Langの StrSubstitutorは、あなたが求めていることのほとんどを行います

于 2009-12-09T11:28:48.867 に答える
1

実装するにはStringTemplateを使用しますexpand

void expand(String template, Map<String,String> map) {
    StringTemplate st = new StringTemplate(template);

    for (Map.Entry<String, String> attribute : map) {
       st.setAttribute(attribute.getKey(), attribute.getValue());
    }

    return st.toString();
} 
于 2009-12-09T10:22:00.783 に答える
0

Freemarker と Velocity を見てください。どちらもテンプレート エンジンです。

于 2009-12-09T10:34:42.097 に答える