2012-03-15 12 views
2

Google App EngineでStringTemplateを使用してファイルからテンプレートを読み込もうとしていますが、テンプレートファイルをどこに配置するかわかりません。Google App EngineでStringTemplateファイルを使用するにはどうすればよいですか?

ドキュメントによると、StringTemplateは「CLASSPATHのテンプレートをリソースとして探します」と書かれていますが、GAEの展開の意味がわかりません。

例えば、私は「テンプレート」というディレクトリに私のテンプレートを置くと仮定し、私のサーブレットで、このようなコードを置く:

StringTemplateGroup group = new StringTemplateGroup("mygroup", "templates"); 
StringTemplate st = group.getInstanceOf("homepage"); 

をそれから私は、「テンプレート」ディレクトリを置けばいいのどこ?

+0

この例は、テンプレートディレクトリの絶対パスで "templates"を置き換えると、デバッグモードでローカルに実行する場合に機能します。もちろん、これはGoogle App Engineにデプロイされている場合は動作しません。 –

答えて

3

"templates"ディレクトリを "war"ディレクトリに置くことができます。

これはローカルで動作し、GAEに展開されます(私にとってはとにかく)。

+0

あなた自身の答えを受け入れることができますか?同じ問題に遭遇した他のユーザーにとっては有益でしょう。 –

+1

私はあなたがGAEに関する限り、それらを静的なファイルにする必要はないと思います。むしろ、 "リソースファイル"のままにしてアプリと同じサーバーに配備する必要があるようです。ドキュメントによると、これはwarディレクトリのデフォルト動作です:https://developers.google.com/appengine/docs/java/config/appconfig?csw=1#Java_appengine_web_xml_Static_files_and_resource_files –

+0

JR Lawhome--私はあなたがいると信じています正しい(私はprodで全く「静的」を使用していません)ので、私はそれに応じて答えを修正しました。ありがとう。 –

1

"war/WEB-INF/lib"は確かにclasspathにあります。しかし、そこにテンプレートを持たせるのがどれほど適切かはわかりません。

this SO questionもご覧ください。

+0

ありがとうございますが、 "war/WEB-INF/lib"に入れても動作しません。私は最初の答えがテンプレートをHTTPに公開していることにリンクしているので、テンプレートファイルを自分自身にロードしてからStringTemplateに渡すことを提案します。今のところ私は後者のアプローチに行くつもりですが、私は解決された問題を考慮しません。 –

0

war/WEB-INF/classesディレクトリのルートディレクトリにそれらを入れると、それらはクラスパスに巻き込まれます。ビルドにmavenを使用している場合は、それらをsrc/main/resourcesに置くことができ、それらはrootのクラスパスにコピーされます。

+0

ありがとうございますが、Eclipseにはこのようなディレクトリはありませんが、すでに存在しているため、新しいディレクトリを作成することはできません。私はそれが私の特定のアプリケーションで作成されていないビルド出力用に予約されていると思われます。私は "クラス"と呼ばれる新しいディレクトリを作成し、ビルドパスに追加しようとしましたが、どちらもうまくいきませんでした。 –

+0

いいえ、それは動作しません。あなたのJavaソースディレクトリのルートに置くだけで、正しい場所にコピーされるはずです。だからsrc/com/foo/barのようなものをsrcに入れておけばいいです。 –

関連する問題