Freemarker不分配staticUtil

lee*_*trj 7 freemarker liferay display-templates liferay-7

我在liferay 6.2上工作了应用程序显示模板,我使用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 [在模板"20115#20159#21387"第9行,第27列]提示:如果已知失败的表达式合法地引用有时为null或缺失的内容

在portal-ext.properties中我添加了:

freemarker.engine.restricted.classes=
freemarker.engine.restricted.packages=
freemarker.engine.restricted.variables= 
Run Code Online (Sandbox Code Playgroud)

小智 5

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

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

  • 它们没有被忽略,它们已被移动到 OSGI 配置文件中。根据我所经历的版本和服务包,从控制面板更新它们可能会导致 Liferay 实例停止(不再启动),所以我强烈建议不要这样做 (3认同)

Tot*_*otò 5

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

该文件的内容如下:

restrictedVariables=
Run Code Online (Sandbox Code Playgroud)

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

您可以在Liferay源代码中找到.