[英]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
中獲得更多可用的類和變量,但是我仍然無法調用某些方法,我也不知道為什么。
我做了一個
${assetRenderer.getClassName()}
返回: com.liferay.portlet.documentlibrary.model.DLFileEntry
因此,我應該能夠使用任何DLFileEntry類的公共方法(和擴展類),對嗎?
我想念什么?
資產渲染器渲染的定類的資產項(EI。 JournalArticle
或DLFileEntry
你的情況)。 資產渲染器本身不是給定類的實例(從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
的使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.