2015-06-03 1 views
3

Я заметил, что когда я устанавливаю свой defaultValue для выпадающего списка, altho он правильно выбран в раскрывающемся списке, когда я сначала добавляю свой компонент на страницу, он не записывает значение defaultValue в соответствующий JCR до тех пор, пока я отредактируйте компонент и сохраните его. Даже если я просто открою соответствующий диалог и нажмите «ОК», теперь мой компонент работает так, как ожидалось, потому что значения были добавлены в JCR.AEM DefaultValue написан на JCR

Уверен, что есть важная часть, которую мне не хватает здесь, кто-нибудь знает, как defaultValues, необходимые для правильного отображения компонента, могут быть добавлены в JCR, когда они впервые добавлены на страницу?

ответ

6

Как Shwan сказать, так оно и работает. Значения по умолчанию или пустые тексты предназначены только для диалога. Они не сохраняются до тех пор, пока диалог не будет создан. Свойства должны быть установлены другим методом. CQ уже поставляется с этой функцией, и вы можете сделать это без какого-либо специального кода.

Под вашим компонентом создайте узел cq: template [nt: unstructured]. Если все данные хранятся на самом узле компонента, добавьте значения по умолчанию в качестве свойств в узел cq: template с именем, аналогичным имени в диалоговом окне. Если данные хранятся в дочернем узле, добавьте аналогичный узел в узел cq: template.

Источник: http://blogs.adobe.com/experiencedelivers/experience-management/defaults-in-your-component/

4

Я считаю, что это просто так, как это работает. Значение по умолчанию, указанное в диалоговом окне, не используется до тех пор, пока диалог не будет загружен/сохранен, поэтому до тех пор, пока узел в репозитории JCR, который является автором, не будет иметь значение по умолчанию.

Мы получили это в проекте, добавив код конца кода, который был привязан к компоненту (тегу), так что, когда компонент был загружен, если свойство не было, оно будет записано по умолчанию первый раз. Пример:

if (wcmMode == WCMMode.EDIT) 
{ 
    if(!currentNode.hasProperty("SomePropertyThatWillAlwaysExistIfTheDialogHasBeenSaved")) { 
     currentNode.setProperty("PropertyThatShouldHaveDefault", GlobalConstants.TRUE); 
     currentNode.getSession().save(); 
    } 
} 
1

Как Шаратом Мадаппа говорят о том, что так оно и работает нормально, если компонент имя и JSP имя же. Если у вас нет компонента name.jsp под компонентом или страницей, cq: шаблон не будет работать. (Ссылка: http://labs.6dglobal.com/blog/2014-07-08/using-the-cq-template/)

Если вы hava componentname.html под вашим компонентом, измените тип узла [cq: template] на [ cq: Template] вместо [nt: unstructured]. В этом случае значения defaultValues ​​могут быть добавлены в JCR, когда они сначала добавляются на страницу.

 Смежные вопросы

  • Нет связанных вопросов^_^