2017-08-26 96 views
0

我想通過template.process(,)處理freemarker模板並通過TemplateLoader接口從數據庫(mongo)加載模板。在這裏我想定義不同的數據包含模板的模型。主要我想爲個別包含的模板定義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

相關問題