2017-08-26 13 views
0

私は、template.process(、)を通してfreemarkerテンプレートを処理し、TemplateLoaderインターフェイスを通してデータベース(mongo)からテンプレートを読み込もうとしています。含まれているテンプレートの-model。主に私は個々のインクルードテンプレートに対してtemplate.processを定義したいと思います。freemarkerにインクルードテンプレートのデータモデルを定義する方法

また、テンプレートの処理中にビジネスロジックを実行する方法はありますか。

templateloaderインターフェイスの実装中にテンプレートを処理することをお勧めしますか?

答えて

0

テンプレートを含めると、<#include ...>を意味するテンプレートは、基本的に再利用可能なフラグメントから単一のテンプレートを作成するためのものであり、インクルードテンプレートとは異なるデータモデルを持つことはできません。しかし、独自のカスタムディレクティブ実装(TemplateDirectiveModelを参照)を使用して、別のテンプレート内で全く新しいテンプレート処理を行うことができます。Environment.getOut()Template.processを渡して、親テンプレート処理の出力に書き込みます。

+0

すばやくお返事ありがとうございます。私はこの実装を通してこれを実装しようとします。今のところ、私はTemplateMethodModelExを通して解決策を達成しようとしています。私はこれが正しいアプローチではないことをお勧めします。ここでは、TemplateMethodModelExを実装していますが、exec関数では、データを取得してオブジェクトを返すデータベース呼び出しを行っています。テンプレートに表示するには、私は<#assign x = cmsDataProcessor( "id = 123"、 "count = 2"、 "detail = 1")> $ {x.id} –

+0

を使用しています。だから私はそれが指示であるべきか方法であるべきかわからない。 – ddekany

関連する問題