Struts2 当模板已经传递给Freemerker进行渲染时,如何实现路径解析?
我正在研究ApacheStruts2中的问题,以允许扩展使用FreeMarker编写的Struts标记。问题是在Struts2 当模板已经传递给Freemerker进行渲染时,如何实现路径解析?,struts2,freemarker,Struts2,Freemarker,我正在研究ApacheStruts2中的问题,以允许扩展使用FreeMarker编写的Struts标记。问题是在MultiTemplateLoader已解析路径后如何解析路径。或者换句话说,提议的解决方案是否有效 <#macro includeThemeTemplate templateName> <#list parameters.themeHierarchy as theme> <#attempt> <#include "/$
MultiTemplateLoader
已解析路径后如何解析路径。或者换句话说,提议的解决方案是否有效
<#macro includeThemeTemplate templateName>
<#list parameters.themeHierarchy as theme>
<#attempt>
<#include "/${parameters.templateDir}/${theme}/${templateName}" />
<#break/>
<#recover>
</#attempt>
</#list>
<#-- Cause an exception intentionally which will have the top most theme -->
<#include "/${parameters.templateDir}/${parameters.themeHierarchy[0]}/${templateName}" />
</#macro>
标签中的名称和用法:
<@includeThemeTemplate "controlheader.ftl"/>
<#include "/${parameters.templateDir}/simple/checkboxlist.ftl" />
<@includeThemeTemplate "controlfooter.ftl"/>
我认为它没有问题,因为FreeMarker缓存了失败的模板查找(这意味着如果更新延迟不太小的话,这不应该产生太多的I/O)。但是,对于框架级的东西,你可以考虑使用java,因为它更快,而且更易于维护。Java与
#include
的等价物是freemarker.core.Environment.include
。要获取环境
对象,您可以使用环境.getCurrentEnvironment()
(或者如果您使用的是TemplateDirectiveModel
,则将其作为参数获取)