Struts2 + Freemarker + DisplayTag:如何使其工作
Posted
技术标签:
【中文标题】Struts2 + Freemarker + DisplayTag:如何使其工作【英文标题】:Struts2 + Freemarker + DisplayTag: how to make it work 【发布时间】:2011-03-15 19:12:15 【问题描述】:我目前正在将我们的应用程序从 Webwork 升级到 Struts2。今天遇到一个奇怪的错误:displayTag 升级后停止工作。
这是从我的 FTL 文件中截取的:
@display.table>我得到的错误是:
freemarker.template.TemplateModelException: javax.servlet.jsp.JspException:异常: [.LookupUtil] 查找属性“folderName”时出错 在对象类型“freemarker.template.SimpleSequence”中。 原因:未知属性“文件夹名称”
标准的 struts 标签工作正常,我在我的配置中添加了JspSupportServlet
。知道为什么这不起作用吗?
【问题讨论】:
【参考方案1】:我找到了解决这个问题的方法(不确定它是唯一的方法还是最好的方法,但对我有用)。
问题的根源在于freemarker.template.SimpleSequence
没有开箱即用地实现任何标准的 Collections API,它不是 Collection、Enumerable 等。
为了解决这个问题,我创建了自定义FreemarkerManager
并提供了自定义BeansWrapper
:
现在我只需要更改struts.properties
中的一项设置:
struts.freemarker.manager.classname=xyz.CustomFreemarkerManager
【讨论】:
设置参数object_wrapper的值可以设置成freemarker.ext.beans.BeansWrapper,保证不使用简单的wrapper【参考方案2】:您还可以验证您的部署是否将所有依赖项复制到 WEB-INF/lib。 TaglibFactory 在 jar 里面的 /META-INF/ 下搜索每个 TLD。
看看https://***.com/a/37092269/1113510
【讨论】:
以上是关于Struts2 + Freemarker + DisplayTag:如何使其工作的主要内容,如果未能解决你的问题,请参考以下文章
Struts2 + Freemarker + DisplayTag:如何使其工作
我没有将 freemarker 用于 struts2,但我看到 freemarker 生成了很多日志记录