【发布时间】:2013-04-11 08:26:37
【问题描述】:
我需要在服务器端处理 freemarker ftl 文件并将 HTML 返回给客户端。我想知道是否可以使用 template.process() 处理包含 struts 标签的 freemaker 模板。
动作类代码:
// Configuration created from struts2 freemarkermanager
FreemarkerManager freeMarkerManager = new FreemarkerManager();
Configuration config = freeMarkerManager.getConfiguration(context);
//Configuration without any specific settings.
Configuration config = new Configuration();
//Tried both nothing works.
Template template = config.getTemplate("TEMPLATE PATH");
Map<String, Object> inputMap = new HashMap<String, Object>();
inputMap.put("document", document);
StringWriter output = new StringWriter();
template.process(inputMap, output);
Freemarker 模板:
<#assign s=JspTaglibs["/struts-tags"]>
<table>
<tr>
<th><@s.text name="Document Name"/></th>
<th><@s.text name="Description"/></th>
</tr>
<@s.iterator value="inspiration" status="status">
<tr>
<td class="nowrap"><@s.property value="properties.DOCUMENT_NAME"/></td>
<td class="nowrap"><@s.property value="properties.DESCRIPTION"/></td>
</tr>
</@s.iterator>
</table>
我还在 web-inf 文件夹下添加了 struts-tags.tld。
例外
freemarker.core.InvalidReferenceException:表达式 JspTaglibs 在第 1 行未定义,
如果我删除
freemarker.core.InvalidReferenceException:表达式 s 在第 7 行未定义
【问题讨论】:
-
显然是可能,因为 FreeMarker 结果做到了。 JSP支持需要更多配置;查看源代码或 FM 文档。
-
有没有自定义FreeMarkerResult的例子。
-
为什么需要自定义 FreeMarker 结果?你没有使用结果。如果您将 FM 模板的结果作为操作的一部分返回,但不使用 FM 结果,我不明白您要做什么。
-
因此我没有返回 FM 模板。我想在 struts 动作类中处理 FM 并从中获取 HTML。
-
请自行回答这个问题,以便其他人受益。巧合的是,它提高了 struts2 标签的回答率;)
标签: templates process struts2 tags freemarker