2016-06-24 2 views
0

無料マーカーテンプレートの読み取りプロセスについて教えてもらえますか? Mapのデータベースから取得しているデータモデルと比較すると、テンプレートの欠落している変数を知りたいです。フリーマーカーテンプレート処理がデータモデルを知りたいテンプレート変数がありません

Configuration cfg = new Configuration(Configuration.VERSION_2_3_24); 
cfg.setDirectoryForTemplateLoading(new File(filepath)); 
cfg.setDefaultEncoding("UTF-8"); 
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); 
Map confMap = new HashMap(); 
confMap.put("user", "Sunil"); 
Template temp = cfg.getTemplate("template.txt"); 
OutputStream os = new FileOutputStream(filepath + "\\template.conf"); 
Writer out = new OutputStreamWriter(os); 
temp.process(confMap, out); 

上記のコードを言及を用いtemplate.txt

user=${user} 
firstname =${firstname} 
lastname =${lastname} 

アム。データモデルとテンプレートの間にテンプレートを処理する前に知りたい

+0

あなたがここで何を求めているのかは不明です。 –

+0

テンプレートとデータモデルに関する私の質問。 e、gは4つの変数を持つテンプレートを持っていますが、データ型の値をテンプレート変数よりも多く渡しています。このシナリオでは、いくつの変数が処理されているか知りたいです。 – sunil

答えて

0

テンプレートが必要とするデータ・モデル変数は、テンプレートの実行時にのみ判明します。これは#if -s、.vars[dynamicName] -sなどの理由によるものです。${x}がある場合、xはデータモデル変数を参照するか、xが別のスコープ(グローバル変数など)に存在することは必ずしも明らかではありませんその点。

テンプレートのツリーを歩いてもかなり良い推測をすることができます。あなたはTempalte.getRootTreeNode()でそれを始めることができます。下位互換性は約束されていないため、非推奨のAPIですが、実際には2.3.xでは既存のコードを破損する可能性はほとんどありません。

+0

ありがとうございますが、テンプレートを処理した後に知りたいのですが、失敗した変数やデータモデルの値のリストを確認するには – sunil

+0

テンプレート処理は通常、最初の変数で 'InvalidReferenceException'で打ち切られます。そうですね。複数の欠損変数を収集するには、欠落した変数をどのように継続したいかを決定する必要があります。 'TemplateExceptionHandler'の設定は答えかもしれません。 – ddekany

関連する問題