Freemarker不分配staticUtil

时间:2016-05-20 08:34:30

标签: liferay freemarker liferay-7 display-templates

我在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或缺失:   ==&GT; staticUtil [in template&#34; 20115#20159#21387&#34;在第9行,第27栏]   提示:如果已知失败的表达式在法律上是指某些有时无效或缺失的内容

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

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

5 个答案:

答案 0 :(得分:5)

您引用的属性已移至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源代码中找到。

答案 1 :(得分:4)

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

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

答案 2 :(得分:1)

在liferay 7.1中。您将在

下找到Freemaker Engine
  

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

答案 3 :(得分:0)

  • 转到“控制面板” - &gt;系统设置 - &gt;基础页

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

  • 点击( - )图标,从限制变量中删除 serviceLocator 变量和 staticUtil

  • 如果您想使用 staticUtil 对象,请同时从受限变量中删除此变量。

  • 保存。

  • 重新启动Liferay服务器。

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

答案 4 :(得分:0)

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

com.liferay.portal.template.freemarker.configuration.FreeMarkerEngineConfiguration.config