2

Java Web アプリケーション用の HTML テンプレート ソリューションを探しています。テンプレートのほとんどはカスタム データベースにある可能性が高いため、選択したソースからテンプレートを読み込む柔軟性が必要です。私の検索では、StringTemplate 4 に出くわしましたが、私が目にするすべての例では、ユーザーがテンプレート ファイルをディスクに配置する必要があります。

ファイルまたはディレクトリを指定せずに STGroup をインスタンス化できることに気付きましたが、defineTemplate メソッドを使用しても、ファイル ベースのテンプレートを使用する代わりにはならないようです。残念ながら、defineTemplate を使用したすべてのテストで、属性を機能させることができませんでした。これはすべて、私が暗闇の中で推測しているように感じます.

StringTemplate はこれに適したライブラリですか? よりうまく機能する別のものはありますか?

自社開発を検討し始めています。

4

2 に答える 2

2

私はそれを考え出した...

import org.stringtemplate.v4.*;
import net.sf.json.*;

class STExampleApp {

        public static void main(String args[]) {
                String template = "decl(type, name, value) ::= \"<type> <name><init(value)>;\"\n"
                                + "init(v) ::= \"<if(v)> = <v><endif>\"";
                STGroup views = new STGroupString(template);
                ST decl = views.getInstanceOf("decl");
                decl.add("type", "int");
                decl.add("name", "x");
                decl.add("value", 12);
                System.out.println(decl.render());
        }

}

ファイルのロードは必要ありません。私はこれを学びました: How to format decimal numbers with StringTemplate (ST) in Java?

于 2012-08-27T19:03:27.883 に答える
1

次のように、テンプレートを ST() コンストラクターに渡すだけです。

@Test public void testNullAttr() throws Exception {
    String template = "hi <name>!";
    ST st = new ST(template);
    String expected =
        "hi !";
    String result = st.render();
    assertEquals(expected, result);
}
于 2012-08-28T00:28:51.020 に答える