8

我在 liferay 6.2 上工作过 Application Display Templates,我使用 freemarker 帮助对 liferay 的动态数据列表进行分页。当我升级到 liferay 7 时,这是一个问题。Liferay 7 使​​用代码<#assign records = ddlDisplayTemplateHelper.getRecords(reserved_record_set_id)>获取记录。

旧代码:

<#assign DDLRecordLocalService = serviceLocator.findService("com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalService")> <#assign records = DDLRecordLocalService.getRecords(reserved_record_set_id)> <#assign totalRecord = DDLRecordLocalService.getRecordsCount(reserved_record_set_id, 0) >

它不起作用。

所以我尝试<#assign serviceLocator = staticUtil["com.liferay.portal.template.ServiceLocator"]>staticUtil得到一个错误。

以下已评估为 null 或缺失: ==> staticUtil [in template "20115#20159#21387" at 第 9 行,第 27 列] 提示:如果已知失败的表达式合法地引用有时为 null 或缺失的内容

在 portal-ext.properties 我添加了:

freemarker.engine.restricted.classes=
freemarker.engine.restricted.packages=
freemarker.engine.restricted.variables= 
4

5 回答 5

7

您引用的属性已移至 Liferay 7/DXP 中的 OSGI 配置。要部署它们,您需要创建一个名为com.liferay.portal.template.freemarker.configuration.FreeMarkerEngineConfiguration.cfg的文件并将其放在$LIFERAY_HOME/osgi/configs

该文件的内容如下:

restrictedVariables=

要查找所有配置及其默认值,您可以查看该类com.liferay.portal.template.freemarker.configuration.FreeMarkerEngineConfiguration

你可以在 Liferay 源代码中找到。

于 2017-03-31T05:41:01.907 回答
5

我认为 portal-ext.properties 中的那些属性在 liferay 7 中被忽略了。

您可以在控制面板 → 配置 → 系统设置 → 基础 → FreeMarker 引擎中管理这些属性,并从受限变量中删除“staticUtil”(或直接删除“serviceLocator”)。(需要重启liferay)

于 2016-10-24T11:34:49.037 回答
2

在 Liferay 7.1 中。你会在下面找到 Freemaker Engine

控制面板 -> 系统设置 -> 平台 -> 模板引擎

于 2018-10-05T09:19:05.517 回答
2
  • 转到控制面板 -> 系统设置 -> 基础页面

  • 从列表中找到FreeMarker Engine点击它。

  • 通过单击 (-) 图标从受限变量中 删除serviceLocator变量和staticUtil 。

  • 如果要使用staticUtil对象,则还要从受限变量中删除此变量。

  • 保存。

  • 重启 Liferay 服务器。

您将直接访问应用程序显示模板中的 serviceLocator 对象。

于 2018-03-30T12:06:50.370 回答
1

在 liferay-ce-portal-7.1.1.2-ga3 版本中,文件被重命名为

com.liferay.portal.template.freemarker.configuration.FreeMarkerEngineConfiguration.config
于 2019-05-17T13:01:51.733 回答