在 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 文件中删除设置。没必要。

现在怎么样?

感谢大家宝贵的回复,我发现它对我不起作用,因为我使用的是嵌入式网络内容。在那种情况下它不起作用:)

抱歉,我的问题没有解释清楚。其实我不知道在主题中嵌入网络内容是不同的情况。