我在ADT自定义模板代码中使用以下代码
<#assign storageEngineUtil = utilLocator.findUtil("com.liferay.portlet.asset.service.AssetEntryLocalServiceUtil") />
但这是utilLocator.findUtil("com.liferay.portlet.asset.service.AssetEntryLocalServiceUtil") is undefined
这里有什么我想念的吗? 但
答案 0 :(得分:3)
无法从Freemarker模板访问util类AssetEntryLocalServiceUtil
。
您要做的是访问AssetEntryLocalService
。在ADT模板中限制访问Liferay服务。
您可以通过AssetEntryLocalService
向ServiceLocator
获取实例,但您必须告诉Liferay允许它。
默认配置限制对serviceLocator
变量的访问权限(portal.properties
)。
#
# Set a comma delimited list of variables the FreeMarker engine cannot
# have access to. This will affect Dynamic Data List templates, Journal
# templates, and Portlet Display templates.
#
freemarker.engine.restricted.variables=serviceLocator
需要将设置覆盖为portal-ext.properties
中的空值(即允许在模板中使用serviceLocator
)。
然后,您最终可以致电serviceLocator.findService
来获取服务。
<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetEntryLocalService") />