2

私は、すべての電子メールテンプレートを一元化するのに役立ち、通信ハブを作成できるようにする速度テンプレートリポジトリを作成しようとしているアプリケーションを持っています。すべてのテンプレートは実行時に呼び出され、サービスを介してデータが入力されます。

私の問題は、ユーザーが速度テンプレートのテンプレート入力を定義するときに、オプションの必須のパラメーターリストをユーザーに提供する必要があることです。

速度テンプレートファイルからトークン/タグを読み取り、それらを抽出する方法はありますか?

トークンのリスト$name.address.streetNameを.vmファイルから利用できるようにしたいのと同じです。

正規表現に行きたくない。

それらをキャッシュしたり再利用したりする必要はありません。一度だけ読み取って、デフォルト、必須、およびオプションのパラメーターをデータベースに保存します。

私はこれらのパターンに従っています:http://kickjava.com/src/org/apache/velocity/test/view/TemplateNodeView.java.htm

文字列をベロシティテンプレートとして使用するにはどうすればよいですか?

ご意見をお聞かせください。

4

1 に答える 1

1

私はそれをこのように機能させました

            RuntimeServices runtimeServices = RuntimeSingleton.getRuntimeServices();            
        StringReader reader = new StringReader(String velocityTemplateBodu);
        SimpleNode node = runtimeServices.parse(reader, "dummyOne.vm");


        for(int i=0; i<node.jjtGetNumChildren();i++){
            if(node.jjtGetChild(i) instanceof org.apache.velocity.runtime.parser.node.ASTReference ){
                System.out.println("Node -----------------"+i +"---"+node.jjtGetChild(i).literal());
            }
        }

SimpleNodeクラスを使用すると、.vmファイルのすべてのノードを取得できます。

ノードは、javaCCをASTReferenceおよびASTTextとして使用して読み取られます(どちらもSimpleNodeを拡張します)。トークンを取得するには、ASTReferenceを取得し、HTMLテキストを取得するにはASTTextを使用する必要があります。

于 2012-11-06T22:58:35.780 に答える