如何通过结构/模板名称获取结构/模板ID

时间:2016-04-05 05:36:03

标签: liferay liferay-6 liferay-theme liferay-aui

我有一个要求,需要创建带有结构和模板的JournalArticle。虽然创建JournalArticle的方法期望StructureId和TemplateId,但这些是Liferay.So通过名称生成的,我如何获得两者的Id。

2 个答案:

答案 0 :(得分:3)

创建并执行DynamicQuery,就像这样(只需将Template替换为Structure即可获得结构):

DynamicQuery q = DynamicQueryFactoryUtil.forClass(DDMTemplate.class)
            .add(PropertyFactoryUtil.forName("name").like("%YOUR NAME%"));
List<DDMTemplate> templates = DDMTemplateLocalServiceUtil.dynamicQuery(q);

您必须使用like,因为结构/模板的名称保存如下:

<?xml version='1.0' encoding='UTF-8'?>
<root available-locales="de_DE" default-locale="de_DE">
    <Name language-id="de_DE">YOUR NAME</Name>
</root>

不同的语言环境可以有不同的名称。

答案 1 :(得分:1)

您可以使用此代码获取StructureId(称为DDMStructure)

long classNameIdJournalArticle = ClassNameLocalServiceUtil.getClassNameId(JournalArticle.class);
DDMStructure ddmStructure = DDMStructureLocalServiceUtil.getStructure(groupId, classNameIdJournalArticle, "myDDMStructureName");

使用此代码

的TemplateId(称为DDMTemplate)
 DDMTemplate ddmTemplate = DDMTemplateLocalServiceUtil.getTemplate(groupId, classNameIdDDMStructure, "ddmTemplateName");