0

Google App Engineで(Javaを使用して)HTML形式のテンプレートを使用して電子メールの書式を設定しようとしていますが、私の生活の中では、これを設定する方法についてはまともなチュートリアルが見つかりません。GAE(Java)でテンプレートフレームワークを設定するためのチュートリアルはありますか?

私はStringTemplateを調べてみましたが、スタンドアロンテンプレートがサーブレットのコンテキストから読み込まれ、フォーマッタとして使用されている例は見つかりません。

誰でも手助けできますか? VelocityやFreeMarkerなどの提案は、GAEで実行されている限り公開されています。

おかげ

+0

Freemarkerのをいくつかの奇妙な理由でAWTに依存しますが、GAEでは動作しません。とにかくStringTemplateほど良い選択ではありません。 –

+0

FreeMarkerには正式なGAE版がJava版とともにリリースされています。 (そのAWTの依存関係は、一般的なツリーAPIにあり、何もGUI関連ではありません...) – ddekany

答えて

3

これを行う方法がわかりました。

StringTemplateのドキュメントは非常に混乱する可能性があります。最新バージョン(バージョン4)は、以前のバージョンとは異なるクラスがあります(ST代わりのStringTemplateSTGroup代わりのStringTemplateGroup、など)

また、「ANTLR」に関する外部依存関係を持っています。 Per these instructions(リンクにはjarファイルへのリンクが含まれています)、 'antlr'と 'SimpleTemplate' jarファイルをサーバーのWEB-INF/libディレクトリに置きます。

バージョン2で導入されたテンプレート「グループ」は、Webサーバー上のファイルからテンプレートを読み込むために必要です。

だから、それは働いてもらうために、私は、次の内容で、テンプレートグループファイルを定義しなければならなかった私は、このファイルは、相対URLを経由して自分のコードからアクセスしたことを確認しなければならなかった

html_format(keyToReplace1, keyToReplace2) ::= << 
<html> 
<body> 
    <div> 
    This is $keyToReplace1$ 
    <br/> 
    This is $keyToReplace2$ 
    </div> 
</body> 
</html> 
>> 

emailTemplate.stgを命名します。 localhostを:これは、このような時など、ブラウザでURLに行くことによって簡単にテスト可能である8888 /テンプレート/ emailTemplate.stg

次に、このテンプレートを使用するために、私は次のコードを使用:

STGroup g = new STGroupFile("templates/emailTemplate.stg", '$', '$'); 
ST emailTemplate = g.getInstanceOf("html_format"); 
emailTemplate.add("keyToReplace1", "value for the first key"); 
emailTemplate.add("keyToReplace2", "value for the second key"); 
String result = emailTemplate.render(); 
+0

Javaのバージョンのみが名前の変更の影響を受けるようです。 C#ポートは「適切な」名前を保持します。 –

0

あなたはStringTemplateで使用するだけで、他の入力ストリームのようにクラスパスからテンプレートを読み込むことができます。

import org.antlr.stringtemplate.*; 
import org.antlr.stringtemplate.language.*; 

StringTemplate hello = new StringTemplate("Hello, $name$", DefaultTemplateLexer.class); 
hello.setAttribute("name", "World"); 
System.out.println(hello.toString()); 

あなたはClass.getResourceAsString()を使用して、入力ストリームを使用してファイル/リソースをロードする方法を確認するためには、JavaDocを見ることができ、ファイルは.warファイルのdefault packageで通常classpathにする必要があります(IEでrootの/lib)を.classファイルで置き換えます。

リソースをStringに読み込み、最初のパラメータを内容に置換するか、またはStreamコンストラクタのいずれかをStringTemplateに置き換えます。

これは本当に簡単です。

+0

ありがとう!私はこれを行う方法を考え出すのに苦労しています...あなたはこれがどのように行われているかを見ることができるチュートリアルを知っていますか? StringTemplateの使い方はわかりません。 – Cuga

+0

私は本当にWebコンテナのコンテキストパスからテンプレートを読み込む方法を理解することに興味があります。私はまだこれを行う方法を示す例を見つけることができません。 – Cuga

関連する問題