【发布时间】:2011-09-23 05:08:03
【问题描述】:
我有一个 freemarker 模板 (index.ftl),其中包含一个包含 (page1.ftl 和 page2.ftl):
this is the sample content on index.ftl
<#include "/pages/page1.ftl">
<#include "/pages/page2.ftl">
blablabla contents here
在我的 spring 环境中,我扩展了“AbstractTemplateView”类并覆盖了“renderMergedTemplateModel”方法,它像这样调用 doRender:
protected void doRender(Map<String, Object> model, String viewName, HttpServletResponse response)
throws Exception {
logger.debug("start doRender");
try {
Configuration config = new Configuration();
String templatePath = templateService.getTemplateLocation();
config.setDirectoryForTemplateLoading(new File(templatePath));
Template template = config.getTemplate(viewName);
response.setContentType("text/html; charset=" + template.getEncoding());
PrintWriter out = response.getWriter();
template.process(model, out);
} catch (IOException e) {
String message = format("cannot render template <{0}> due to IOException: {1}", e.getMessage());
logger.error(message, e);
throw new NestedServletException(message, e);
}
}
我的问题是,如何为 page1.ftl 和 page2.ftl 分别设置包含的目录?可能吗 ? “setDirectoryForTemplateLoading”方法只设置模板的默认目录。任何包含都将相对于该目录进行查找。
这个问题的上下文是我将加载包含。但是如果我找不到 include ,它将查找另一个目录。
示例 FTL 说 (index.ftl):
FREEMARKER MAIN
<#include "page1.ftl">
<#include "page2.ftl">
我尝试了 multiloader,它似乎正在处理 index.ftl。它将尝试解析到我定义的目录。但是我怎样才能让它解决说 page1.ftl 和 page2.ftl 的不同目录路径?可能吗?当其中一个包含不存在时,它会给我错误。
【问题讨论】:
标签: spring path include freemarker