Как добавить структуру и шаблон к журнальной статье при программном создании

Я создал структуру и шаблон через пользовательский интерфейс портала. Теперь я программно создаю журнальную статью в классе действий. При создании журнальной статьи в классе действий я хочу установить существующую структуру и шаблон для этой журнальной статьи. Я пытаюсь использовать следующий метод, но вот что подразумевается под ddmStructureKey и ddmTemplateKey.

Связаны ли они только с моим требованием?

JournalArticleLocalServiceUtil.addArticle(userId, groupId, folderId, titleMap, descriptionMap, content, ddmStructureKey, ddmTemplateKey, serviceContext)

Помогите мне в этом неизвестном деле. Спасибо.


person Kona Laxman Deepak    schedule 29.03.2016    source источник
comment
Пожалуйста, опубликуйте больше контекста о том, чего вы пытаетесь достичь и что вы уже сделали.   -  person Tim Ogilvy    schedule 29.03.2016
comment
Контекст очень прост. Мне нужно программно установить структуру и шаблон для статьи в журнале. Выше я указал, какой метод использовался для ее получения, и в этом методе не известно о двух параметрах.   -  person Kona Laxman Deepak    schedule 29.03.2016
comment
Пожалуйста, используйте пробел и клавишу Shift при наборе сообщений. После '.' должен быть пробел. характер, а слово «я», как и в слове «себя», имеет заглавную букву. Я не эксперт по жизненным лучам, поэтому я позволю кому-то другому помочь вам ответить на ваш вопрос, однако, если вы надеетесь, что люди помогут вам, предоставьте как можно больше подробностей. Спасибо!   -  person Tim Ogilvy    schedule 29.03.2016
comment
ddmStructure и ddmTemplateKey — это структура статьи и шаблон (velocity, vm) для отображения этой статьи.   -  person Romeo Sheshi    schedule 29.03.2016
comment
Глядя на реализацию JournalArticleLocalServiceUtil.addArticle, видно, что ddmStructureKey и ddmTemplateKey задают structureId и templateId соответственно. Итак, вы передали идентификаторы структуры и шаблона в виде строки, которую хотите применить к своему контенту.   -  person Parkash Kumar    schedule 29.03.2016
comment
Хорошо, спасибо. Как установить значения в поле структуры, поскольку мы передаем содержимое в формате xml. Поскольку я скопировал источник структуры из пользовательского интерфейса и передал его в параметр содержимого метода addArticle   -  person Kona Laxman Deepak    schedule 29.03.2016
comment
Точно так же вы можете установить параметры structureId и templateId в аргументы ddmStructureKey и ddmTemplateKey метода add.   -  person Parkash Kumar    schedule 29.03.2016


Ответы (2)


Следующий код, который я написал, чтобы ответить на вышеуказанный вопрос, и у меня сработал. Спасибо @Romeo Sheshi. Я жестко запрограммировал некоторые вещи. В соответствии с вашими требованиями вы можете делать все, что хотите.

ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
                Long parentFolderId = DLFolderConstants.DEFAULT_PARENT_FOLDER_ID;
                DDMStructure ddmStructure=DDMStructureLocalServiceUtil.getDDMStructure(11515);
                DDMTemplate ddmTemplate=DDMTemplateLocalServiceUtil.getDDMTemplate(11517);
                Map<Locale,String> titleMap=new HashMap<Locale,String>();
                titleMap.put(themeDisplay.getLocale(), "First Record");
                String content=
                        "<root available-locales='en_US' default-locale='en_US'>"
                                +"<dynamic-element dataType='string' indexType='keyword' name='Title' readOnly='false' repeatable='false' required='false' showLabel='true' type='text' width='small'>"
                                    +"<dynamic-content>FirstRecord</dynamic-content>"
                                +"</dynamic-element>"
                                +"<dynamic-element dataType='string' indexType='keyword' name='Description' readOnly='false' repeatable='false' required='false' showLabel='true' type='textarea' width='small'>"
                                +"  <dynamic-content>This the first one doing by programatically</dynamic-content>"
                                +"</dynamic-element>"
                                +"<dynamic-element dataType='image' fieldNamespace='wcm' indexType='keyword' name='DamImage' readOnly='false' repeatable='false' required='false' showLabel='true' type='wcm-image' width=''>"
                                +"  <dynamic-content>http://localhost:8080/documents/10184/0/welcome_community/0dc0adb1-b565-409a-b766-96d1e42b04fb?t=1459163274526</dynamic-content>"
                                +"</dynamic-element>"
                                +"<dynamic-element dataType='string' indexType='keyword' name='UserIdExcel' readOnly='false' repeatable='false' required='false' showLabel='true' type='text' width='small'>"
                                +"  <dynamic-content>458155</dynamic-content>"
                                +"</dynamic-element>"
                                +"<dynamic-element dataType='string' indexType='keyword' name='Username' readOnly='false' repeatable='false' required='false' showLabel='true' type='text' width='small'>"
                                +"  <dynamic-content>LaxmanDeepak</dynamic-content>"
                                +"</dynamic-element>"
                                +"<dynamic-element dataType='date' fieldNamespace='ddm' indexType='keyword' name='DateFromExcel' readOnly='false' repeatable='false' required='false' showLabel='true' type='ddm-date' width='small'>"
                                +"<dynamic-content>03/29/2016</dynamic-content>"
                                +"</dynamic-element>"
                            +"</root>";
                ServiceContext serviceContext = new ServiceContext();
                serviceContext.setScopeGroupId(themeDisplay.getScopeGroupId());
                serviceContext.setWorkflowAction(WorkflowConstants.ACTION_PUBLISH);

                JournalArticleLocalServiceUtil.addArticle(themeDisplay.getUserId(), themeDisplay.getScopeGroupId(), parentFolderId, titleMap, null, content, ddmStructure.getStructureKey(), ddmTemplate.getTemplateKey(), serviceContext);
person Kona Laxman Deepak    schedule 29.03.2016

ddmStructure и ddmTemplateKey — это структура статьи и шаблон (velocity, freemarker) для отображения этой статьи. если вы используете пустую строку, вы выбираете шаблон по умолчанию и структуру по умолчанию, в противном случае, если вы не хотите использовать свою структуру и шаблон, вы должны получить их с помощью этих служб.

DDMStructureLocalServiceUtil
DDMTemplateLocalServiceUtil
person Romeo Sheshi    schedule 29.03.2016
comment
Да, я понял этот момент, но какие значения мне нужно передать. Либо идентификатор, либо имя структуры и шаблона, либо любые другие значения. Поскольку метод ожидает значения типа String - person Kona Laxman Deepak; 29.03.2016
comment
в DDMTemplate есть метод getTemplateKey(), поэтому в структуре getStructureKey() - person Romeo Sheshi; 29.03.2016
comment
Спасибо за ваш быстрый ответ, это помогло мне. И еще один вопрос, который у меня есть здесь. Предположим, моя структура содержит 2 текстовых поля. Теперь, как установить значения для этих полей в файле xml, который передается как значение для содержимого. - person Kona Laxman Deepak; 29.03.2016
comment
Статья представляет собой xml, поэтому вам нужно использовать какой-либо синтаксический анализатор xml, чтобы добавить к нему значение, или использовать конкатенацию строк на основе вашей структуры xml. - person Romeo Sheshi; 29.03.2016