如何在Liferay Portlet中按结构名称获取Web内容?

时间:2016-06-13 11:35:31

标签: liferay structure portlet

我需要在jsp portlet中获取使用特定Structure创建的所有Web Content。

我尝试使用structureName但这会抛出异常

ClassLoader cl = PortalClassLoaderUtil.getClassLoader();
DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(JournalArticle.class, cl)
        .add(PropertyFactoryUtil.forName("structureName").eq("Empresa"));
List <JournalArticle> journalArticles = JournalArticleLocalServiceUtil.dynamicQuery(dynamicQuery);

我如何按结构获取网页内容?

2 个答案:

答案 0 :(得分:2)

在查询journalarticles并将structureKey作为值传递时,您需要使用structureId字段

DynamicQuery dynamicQueryStructure = DynamicQueryFactoryUtil.forClass(
                DDMStructure.class).add(PropertyFactoryUtil.forName("name").like(
                "%>Empresa</Name>%"));

        List<DDMStructure> structures = DDMStructureLocalServiceUtil.dynamicQuery(dynamicQueryStructure, 0, 1);
        if(!structures.isEmpty()) {
            String structureKey = structures.get(0).getStructureKey();
            ClassLoader cl = PortalClassLoaderUtil.getClassLoader();
            DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(JournalArticle.class, cl)
                    .add(PropertyFactoryUtil.forName("structureId").eq(structureKey));
            List<JournalArticle> journalArticles = JournalArticleLocalServiceUtil.dynamicQuery(dynamicQuery);

        }

答案 1 :(得分:1)

没有必要构建动态查询并使用类加载器,JournalArticleService可以做到这一点。

请参阅JournalArticleLocalServiceUtil#getStructureArticles(groupId, dmStructureKey)