2016-07-28 12 views
0

私はPlay 2.5を使用しています。関連する静的HTMLテンプレートのデータをすべてデータベースの列に格納し、関連するオブジェクトを呼び出して渡す必要があります。Play 2.5 - データベースにテンプレートを格納する

Playでは、実行前にクラスパスに含まれる静的ファイルとしてPlayが存在する必要があるため、これは困難であることが判明しています。私ができること(すなわち文字列のテンプレート)私は、変数でこのテンプレートを保存する

<html> 
Hello @name! 
</html> 

:たとえば

は、私はこのようになりますindex.scala.htmlファイルを持っていると言いますオブジェクトを以下のように渡します:

String template = GreetingDTO.getTemplate(); 

Content html = template.render(User.getName()); 

これは、この時点でテンプレート化に関して私がやっているすべてのことです。オブジェクトに渡されたものを電子メール通知用のユーザー編集可能なHTMLレイアウトにフォーマットする必要があります。

Playのクラスパス構造をハッキングしないでこれは可能ですか?どこから始めるのですか? Twirl以外のテンプレートエンジンを使用することで、これを簡単に実現できますか?私が見つけた唯一の例は、数年前のthis古いFreemarker投稿ですので、もう少し最新のものがあるかもしれないと思っていました。

答えて

0

デフォルトのテンプレートエンジンであるTwirlを使用することはできません。これは、スカラーコードにコンパイルされた後、バイトコードにコンパイルされ、コンパイル/ビルド時にすべて発生するためです。 the docs

テンプレートは、簡単な命名規則に従って、標準のScala関数としてコンパイルされます。 views/Application/index.scala.htmlテンプレートファイルを作成すると、メソッドを持つviews.html.Application.indexクラスが生成されます。

もちろん、change the template engineにすることもできますし、要件(動的にテンプレートを読み込んで解析する)に合った別のテンプレートエンジンを使用することもできます。最後に、modules directoryをご覧ください。

関連する問題