如何从Liferay 7.4中的ddmfieldattribute表中获取字段smallAttributeValue?

问题描述 投票:0回答:3

Liferay 7.4 将结构数据存储在“ddmfieldattribute”表中。我正在尝试获取 ADT 模板中结构的字段,但找不到解决方案。

该结构体有以下字段:

  • 标题
  • 内容

ADT代码如下:

<#assign dlService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")>

<#if entries?has_content>
    <#list entries as entry>
        <#if entry.getClassName() == "com.liferay.journal.model.JournalArticle" >      
            //Get the fields from the structure
        </#if>
    </#list>
</#if>

问候!

liferay freemarker liferay-7
3个回答
2
投票

不确定我是否明白你想要什么,但你可以从小部件模板免费标记器中获取条目的期刊文章(与网页内容相同):

assetRenderer = entry.getAssetRenderer()
journalArticle = assetRenderer.getArticle()

然后得到它的结构:

articleDDMStructure = journalArticle.getDDMStructure()

及其领域:

ddmFormFields = getDDMFormFields(false)

P.S.:这个 github 存储库包含一些很棒的 ADT 示例


1
投票

代码运行良好。我已设法从 ADT 模板中结构的“标题”和“内容”字段获取数据。 (Liferay 7.4)

<#assign dlService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")>
<#assign ddmFieldLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMFieldLocalService")/>

<#if entries?has_content>
    <#list entries as entry>
        <#if entry.getClassName() == "com.liferay.journal.model.JournalArticle" >      
            <#assign assetRenderer = entry.getAssetRenderer()/>
            <#assign journalArticle = assetRenderer.getAssetObject() />
            <#assign ddmStructure = journalArticle.getDDMStructure() />
            <#assign ddmForm = ddmStructure.getDDMForm()/>
            <#assign ddmFormValues = ddmFieldLocalService.getDDMFormValues(ddmForm, journalArticle.getId()) />
            <#assign ddmFormFieldValues = ddmFormValues.getDDMFormFieldValues() />

            <#list ddmFormFieldValues as fieldName>
                <#if fieldName.getFieldReference() == 'titulo'>
                    ${fieldName.getValue().getString(locale)}
                </#if>

                <#if fieldName.getFieldReference() == 'contenido'>
                    ${fieldName.getValue().getString(locale)}
                </#if>
            </#list>
        </#if>
    </#list>
</#if>

问候!


0
投票

对于我来说,在 liferay 7.4 ga 125 中,你的 ADT 代码不起作用。我缺少什么?也许需要 serviceLocator 权限?

© www.soinside.com 2019 - 2024. All rights reserved.