簡體   English   中英

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中獲得更多可用的類和變量,但是我仍然無法調用某些方法,我也不知道為什么。

我做了一個

${assetRenderer.getClassName()}

返回: com.liferay.portlet.documentlibrary.model.DLFileEntry

因此,我應該能夠使用任何DLFileEntry類的公共方法(和擴展類),對嗎?

我想念什么?

資產渲染器渲染的定類的資產項(EI。 JournalArticleDLFileEntry你的情況)。 資產渲染器本身不是給定類的實例(從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM