我在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=
答案 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