2017-08-26 112 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