首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过API获得Liferay动态数据列表的可重复字段值

如何通过API获得Liferay动态数据列表的可重复字段值
EN

Stack Overflow用户
提问于 2017-09-28 13:52:37
回答 2查看 999关注 0票数 0

我试图为阅读Liferay6.2DDL提供一个服务。

以下是DDL结构:

代码语言:javascript
复制
<root available-locales="en_US" default-locale="en_US">
    <dynamic-element dataType="string" indexType="text" localizable="false" name="Course_ID" readOnly="false" repeatable="false" required="true" showLabel="true" type="text" width="medium">
        <dynamic-element dataType="boolean" indexType="keyword" localizable="true" name="Active" readOnly="false" repeatable="true" required="false" showLabel="true" type="checkbox" width="">
            <dynamic-element dataType="string" indexType="keyword" localizable="true" multiple="false" name="Language" readOnly="false" repeatable="false" required="false" showLabel="true" type="select" width="">
                <dynamic-element name="option22436" type="option" value="en">
                    <meta-data locale="en_US">
                        <entry name="label">
                            <![CDATA[English]]>
                        </entry>
                    </meta-data>
                </dynamic-element>
                <dynamic-element name="option22437" type="option" value="fr">
                    <meta-data locale="en_US">
                        <entry name="label">
                            <![CDATA[French]]>
                        </entry>
                    </meta-data>
                </dynamic-element>
                <dynamic-element name="option22438" type="option" value="de">
                    <meta-data locale="en_US">
                        <entry name="label">
                            <![CDATA[Deutsch]]>
                        </entry>
                    </meta-data>
                </dynamic-element>
                <meta-data locale="en_US">
                    <entry name="label">
                        <![CDATA[Language]]>
                    </entry>
                    <entry name="predefinedValue">
                        <![CDATA[[""]]]>
                    </entry>
                    <entry name="tip">
                        <![CDATA[]]>
                    </entry>
                </meta-data>
            </dynamic-element>
            <dynamic-element dataType="string" indexType="keyword" localizable="true" name="Guest_URL" readOnly="false" repeatable="false" required="false" showLabel="true" type="text" width="small">
                <meta-data locale="en_US">
                    <entry name="label">
                        <![CDATA[Guest URL]]>
                    </entry>
                    <entry name="predefinedValue">
                        <![CDATA[]]>
                    </entry>
                    <entry name="tip">
                        <![CDATA[]]>
                    </entry>
                </meta-data>
            </dynamic-element>
            <dynamic-element dataType="string" indexType="keyword" localizable="true" name="Registered_URL" readOnly="false" repeatable="false" required="false" showLabel="true" type="text" width="small">
                <meta-data locale="en_US">
                    <entry name="label">
                        <![CDATA[Registered URL]]>
                    </entry>
                    <entry name="predefinedValue">
                        <![CDATA[]]>
                    </entry>
                    <entry name="tip">
                        <![CDATA[]]>
                    </entry>
                </meta-data>
            </dynamic-element>
            <meta-data locale="en_US">
                <entry name="label">
                    <![CDATA[Active]]>
                </entry>
                <entry name="predefinedValue">
                    <![CDATA[true]]>
                </entry>
                <entry name="tip">
                    <![CDATA[]]>
                </entry>
            </meta-data>
        </dynamic-element>
        <dynamic-element dataType="document-library" fieldNamespace="ddm" indexType="keyword" localizable="true" name="Documents_and_Media8331" readOnly="false" repeatable="false" required="false" showLabel="true" type="ddm-documentlibrary" width="">
            <meta-data locale="en_US">
                <entry name="label">
                    <![CDATA[Documents and Media]]>
                </entry>
                <entry name="predefinedValue">
                    <![CDATA[]]>
                </entry>
                <entry name="tip">
                    <![CDATA[]]>
                </entry>
            </meta-data>
        </dynamic-element>
        <meta-data locale="en_US">
            <entry name="label">
                <![CDATA[Course ID]]>
            </entry>
            <entry name="predefinedValue">
                <![CDATA[]]>
            </entry>
            <entry name="tip">
                <![CDATA[]]>
            </entry>
        </meta-data>
    </dynamic-element>
</root>

如您所见,我有一个可重复的复选框容器,它在结构视图中还有3个元素

我可以获得和迭代记录列表,但是我不知道如何获得一个包含所有复选框的列表,并在其中迭代它们的元素。

代码语言:javascript
复制
DynamicQuery getRecordsetIdQuery = DDLRecordSetLocalServiceUtil.dynamicQuery()
            .setProjection(ProjectionFactoryUtil.distinct(ProjectionFactoryUtil.property("recordSetId")))
            .add(RestrictionsFactoryUtil.ilike("name", courseSetName));

    DynamicQuery getDdlRecordListQuery = DDLRecordLocalServiceUtil.dynamicQuery()
            .add(PropertyFactoryUtil.forName("recordSetId").in(getRecordsetIdQuery));

    JSONArray courseList = JSONFactoryUtil.createJSONArray();

    List ddlRecordList = DDLRecordLocalServiceUtil.dynamicQuery(getDdlRecordListQuery);
    if (ddlRecordList != null && ddlRecordList.size() > 0) {
        int ddlRecordListSize = ddlRecordList.size();
        for (int i = 0; i < ddlRecordListSize; i++) {
            DDLRecord ddlRec = (DDLRecord) ddlRecordList.get(i);
            Field active = ddlRec.getField("Active");

..。

你能帮我点主意吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-25 08:21:33

我有三个领域。如何在portlet中获得重复字段的解决方案。

1.语言名(父域和重复域) 2. DocumentLinkLabel (重复域) 3. DocumentLink (子域)

代码语言:javascript
复制
for (JournalArticle journalArticle : journalArticleList) {
    Document docxml;
    try {
        docxml = SAXReaderUtil.read(journalArticle.getContent());
        Node root = docxml.getRootElement();
        List<Node> languageList = root.selectNodes("/root/dynamic- 
        element[@name='LanguageName']");    

        for (int i = 0; i < languageList.size(); i++)
        {
            Node languageNode = languageList.get(i);
            String languageName =languageNode.selectNodes("/root/dynamic- 
            element[@name='LanguageName']/dynamic-content[@language- 
            id='en_US']").get(i).getText();
            System.out.println("language Name : "+ languageName);

             List<Node> documentLinkLabelList =languageNode.selectNodes("dynamic-element[@name='DocumentLinkLabel']/dynamic-element[@name='DocumentLink']");
             for (int j = 0; j < documentLinkLabelList.size(); j++) {
                 Node languageNode1 = documentLinkLabelList.get(j);
                 String documentLinkName =languageNode.selectNodes("dynamic- 
                 element[@name='DocumentLinkLabel']/dynamic-content[@language-id='en_US']").get(j).getText();
                 System.out.println(" document Link Lable Name : "+ documentLinkName);
                 String linkNameList=languageNode1.selectNodes("//dynamic- 
                 element[@name='LanguageName']["+(i+1)+"]/dynamic- 
                 element[@name='DocumentLinkLabel']/dynamic-element[@name='DocumentLink']/dynamic-content[@language-id='en_US']").get(j).getText();
                 System.out.println(" linkNameList : "+ linkNameList);
             }
        }
    } catch (DocumentException e) {
        e.printStackTrace();
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-09-29 09:00:55

不能在代码中显式访问DDList内容。您必须从数据库中获取记录的xml,并使用SAXParserUtilXPath表达式读取这些值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46470932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档