У меня есть требование: нужно создать JournalArticle со структурой и шаблоном. При создании JournalArticle метод ожидает StructureId и TemplateId, но они генерируются Liferay. Итак, по имени, как я могу получить идентификаторы обоих.
Как получить идентификатор структуры/шаблона по имени структуры/шаблона
Ответы (2)
Создайте и выполните 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>
Для разных локалей могут быть разные имена.
person
Timo Türschmann
schedule
03.01.2017
Привет, небольшое предложение по улучшению: чтобы избежать выбора структур, имя которых начинается только с ВАШЕГО ИМЯ, вам лучше изменить код
.like("%YOUR NAME%")
на .like("%>YOUR NAME<%")
.
- person Petr Bodnár; 16.08.2017
Вы можете получить StructureId (называемый DDMStructure) с помощью этого кода
long classNameIdJournalArticle = ClassNameLocalServiceUtil.getClassNameId(JournalArticle.class);
DDMStructure ddmStructure = DDMStructureLocalServiceUtil.getStructure(groupId, classNameIdJournalArticle, "myDDMStructureName");
И TemplateId (называемый DDMTemplate) с этим кодом
DDMTemplate ddmTemplate = DDMTemplateLocalServiceUtil.getTemplate(groupId, classNameIdDDMStructure, "ddmTemplateName");
person
fabballe
schedule
26.04.2016
Это не по имени, а по templateKey.
- person Timo Türschmann; 03.01.2017
Фактически, frameworkKey/templateKey может рассматриваться как имя. Когда вы заглянете в таблицу ddmstructure, вы даже найдете там обычные имена для некоторых предопределенных структур (вместо сгенерированных чисел). К сожалению, Liferay API просто не знает об этом, вы, вероятно, не найдете никакой документации по этому поводу. Все, что известно наверняка, вы не можете изменить эти значения *Key через графический интерфейс...
- person Petr Bodnár; 16.08.2017
DynamicQuery
методуdynamicQuery
xxxLocalServiceUtil
, который вернет вам список результатов. - person Parkash Kumar   schedule 05.04.2016