我有一个要求,需要创建带有结构和模板的JournalArticle。虽然创建JournalArticle的方法期望StructureId和TemplateId,但这些是Liferay.So通过名称生成的,我如何获得两者的Id。
答案 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");