在 liferay web-content 中使用 staticUtil 服务抛出 freemarker 错误
Posted
技术标签:
【中文标题】在 liferay web-content 中使用 staticUtil 服务抛出 freemarker 错误【英文标题】:Using staticUtil service in liferay web-content throwing freemarker error 【发布时间】:2018-06-14 06:24:10 【问题描述】:我必须在 web-content 中获取 ThemeDisplay() 来比较页面标题。我正在使用<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
获取服务上下文,但它抛出了下面提到的 freemarker 异常:
没有为此错误指定错误描述;低级消息: java.lang.ClassNotFoundException:com.liferay.portal.template.freemarker_2.0.29 找不到 com.liferay.portal.kernel.service.ServiceContext ---- FTL 堆栈跟踪(“~”表示嵌套相关): - 失败:#assign service = staticUtil["com.lif... [in template "20155#20195#54243" at line 21, column 1] ----
仅供参考:我已经在控制面板 freemarker 引擎中启用了 freemarker 引擎设置。也在 portal-ext.properties 文件中。
【问题讨论】:
你确定这个内核类应该在这个上下文中可用吗? 【参考方案1】:我刚刚在我的 freemarker 模板中尝试了以下内容:
<#assign
serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() />
它从 Liferay 7 GA5 开始工作。您确定您已正确启用 Freemarker 变量吗?验证:
点击菜单->控制面板->配置->系统设置 搜索freemarker
并回车
点击三个垂直点 -> 编辑
将staticUtil
更改为nonExistent
之类的东西(只是删除它为我带来了afaik)。
关闭服务器并从portal-ext.properties
文件中删除设置。没必要。
现在怎么样?
【讨论】:
如何使用属性来做到这一点?【参考方案2】:感谢大家的宝贵回复,我发现它对我不起作用,因为我使用的是嵌入式网络内容。在那种情况下它不起作用:)
抱歉,我的问题中解释较少。实际上我不知道在主题中嵌入网络内容是另一种情况。
【讨论】:
以上是关于在 liferay web-content 中使用 staticUtil 服务抛出 freemarker 错误的主要内容,如果未能解决你的问题,请参考以下文章
为啥不应该在 Liferay 的生产环境中使用 HSQLDB?
如何使用 javascript 在 Liferay 中检索用户个人资料图片
使用 liferay 和 icefaces 共享 Portlet 数据