在 liferay web-content 中使用 staticUtil 服务抛出 freemarker 错误
Using staticUtil service in liferay web-content throwing freemarker error
我必须在 web-content 中获取 ThemeDisplay() 来比较页面标题。我正在使用 <#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
获取服务上下文,但它抛出下面提到的 freemarker 异常:
No error description was specified for this error; low-level message:
java.lang.ClassNotFoundException: com.liferay.portal.kernel.service.ServiceContext cannot be found by com.liferay.portal.template.freemarker_2.0.29
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign service = staticUtil["com.lif... [in template "20155#20195#54243" at line 21, column 1]
----
仅供参考:我已经在控制面板 freemarker 引擎中启用了 freemarker 引擎设置。同样在 portal-ext.properties 文件中。
我刚刚在我的 freemarker 模板中尝试了以下内容:
<#assign
serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() />
它从 Liferay 7 GA5 开始工作。您确定已正确启用 Freemarker 变量吗?验证:
- 点击菜单 -> 控制面板 -> 配置 -> 系统设置
- 搜索
freemarker
并按回车键
- 单击三个垂直点 -> 编辑
- 将
staticUtil
更改为 nonExistent
之类的东西(我只是删除了它,afaik)。
- 关闭服务器并从
portal-ext.properties
文件中删除设置。没必要。
现在怎么样?
感谢大家宝贵的回复,我发现它对我不起作用,因为我使用的是嵌入式网络内容。在那种情况下它不起作用:)
抱歉,我的问题没有解释清楚。其实我不知道在主题中嵌入网络内容是不同的情况。
我必须在 web-content 中获取 ThemeDisplay() 来比较页面标题。我正在使用 <#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
获取服务上下文,但它抛出下面提到的 freemarker 异常:
No error description was specified for this error; low-level message: java.lang.ClassNotFoundException: com.liferay.portal.kernel.service.ServiceContext cannot be found by com.liferay.portal.template.freemarker_2.0.29 ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign service = staticUtil["com.lif... [in template "20155#20195#54243" at line 21, column 1] ----
仅供参考:我已经在控制面板 freemarker 引擎中启用了 freemarker 引擎设置。同样在 portal-ext.properties 文件中。
我刚刚在我的 freemarker 模板中尝试了以下内容:
<#assign
serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() />
它从 Liferay 7 GA5 开始工作。您确定已正确启用 Freemarker 变量吗?验证:
- 点击菜单 -> 控制面板 -> 配置 -> 系统设置
- 搜索
freemarker
并按回车键 - 单击三个垂直点 -> 编辑
- 将
staticUtil
更改为nonExistent
之类的东西(我只是删除了它,afaik)。 - 关闭服务器并从
portal-ext.properties
文件中删除设置。没必要。
现在怎么样?
感谢大家宝贵的回复,我发现它对我不起作用,因为我使用的是嵌入式网络内容。在那种情况下它不起作用:)
抱歉,我的问题没有解释清楚。其实我不知道在主题中嵌入网络内容是不同的情况。