Lifefay freemarker ADT:方法不可用?
Lifefay freemarker ADT: methods unavailable?
我正在尝试为资产发布者(文档和媒体类型)开发一些 ADT,但我经常收到一条消息告诉我:
Expression assetRenderer.getDataRepositoryId is undefined
或
Expression assetRenderer.getFileEntryId is undefined
我发现了一些帖子,其中有人说我们必须添加
velocity.engine.restricted.classes=
velocity.engine.restricted.variables=
freemarker.engine.restricted.classes=
freemarker.engine.restricted.variables=
在 portal-ext.properties
中获得更多 classes 和变量可用,但我仍然无法调用某些方法,我也不知道为什么。
我做了一个
${assetRenderer.getClassName()}
哪个returns:com.liferay.portlet.documentlibrary.model.DLFileEntry
所以我应该可以使用任何 DLFileEntry class public 方法(和扩展的 classes),对吗?
我错过了什么?
资产渲染器渲染给定 class 的资产条目(在您的情况下为 JournalArticle
或 DLFileEntry
)。资产渲染器本身不是给定 class 的实例(在 Java 意义上)。它始终是 com.liferay.portlet.asset.model.AssetRenderer
.
的实例
要获取相关 DLFileEntry
的实例,您必须使用 DLFileEntryLocalService
来找到它。
<#-- Obtains instance of DLFileEntryLocalService -->
<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService") />
<#-- Function returning underlying DLFileEntry for the given AssetEntry -->
<#function getDLFileEntry assetEntry>
<#return DLFileEntryLocalService.getDLFileEntry(assetEntry.getClassPK())/>
</#function>
请注意,您需要通过在 portal-ext.properties
中设置 freemarker.engine.restricted.variables=
来明确启用 serviceLocator
的使用。
我正在尝试为资产发布者(文档和媒体类型)开发一些 ADT,但我经常收到一条消息告诉我:
Expression assetRenderer.getDataRepositoryId is undefined
或
Expression assetRenderer.getFileEntryId is undefined
我发现了一些帖子,其中有人说我们必须添加
velocity.engine.restricted.classes=
velocity.engine.restricted.variables=
freemarker.engine.restricted.classes=
freemarker.engine.restricted.variables=
在 portal-ext.properties
中获得更多 classes 和变量可用,但我仍然无法调用某些方法,我也不知道为什么。
我做了一个
${assetRenderer.getClassName()}
哪个returns:com.liferay.portlet.documentlibrary.model.DLFileEntry
所以我应该可以使用任何 DLFileEntry class public 方法(和扩展的 classes),对吗?
我错过了什么?
资产渲染器渲染给定 class 的资产条目(在您的情况下为 JournalArticle
或 DLFileEntry
)。资产渲染器本身不是给定 class 的实例(在 Java 意义上)。它始终是 com.liferay.portlet.asset.model.AssetRenderer
.
要获取相关 DLFileEntry
的实例,您必须使用 DLFileEntryLocalService
来找到它。
<#-- Obtains instance of DLFileEntryLocalService -->
<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.portlet.documentlibrary.service.DLFileEntryLocalService") />
<#-- Function returning underlying DLFileEntry for the given AssetEntry -->
<#function getDLFileEntry assetEntry>
<#return DLFileEntryLocalService.getDLFileEntry(assetEntry.getClassPK())/>
</#function>
请注意,您需要通过在 portal-ext.properties
中设置 freemarker.engine.restricted.variables=
来明确启用 serviceLocator
的使用。