在liferay web-content中使用staticUtil服务抛出freemarker错误

时间:2018-01-04 13:47:54

标签: liferay freemarker liferay-7

我必须在网页内容中获取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文件中。

2 个答案:

答案 0 :(得分:3)

我刚刚在我的freemarker模板中尝试了以下内容:

<#assign
serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() />

它起Liferay 7 GA5的作用。您确定已正确启用Freemarker变量吗?验证:

  • 点击菜单 - &gt;控制面板 - &gt;配置 - &gt;系统设置
  • 搜索freemarker并按Enter
  • 点击三个垂直点 - &gt;修改
  • staticUtil更改为类似nonExistent的内容(只需将其移回给我)。
  • 关闭服务器并从portal-ext.properties文件中删除该设置。没有必要。

现在怎么样?

答案 1 :(得分:1)

感谢各位宝贵的回复,我发现它不适合我,因为我使用的是嵌入式网页内容。在那种情况下,它不起作用:)。

对不起,我的问题解释不多。实际上我并不知道在主题中嵌入网页内容是一个不同的案例。