2012-05-07 2 views
16

Я пытаюсь установить флажок по умолчанию в диалоговом окне компонента при редактировании. Вот свойства на поле:Получение по умолчанию Checkbox в CQ5

jcr:primaryType: widget 
checked: true (boolean) *Documentation says this determines default checked status 
type: checkbox (string) *read this as a fix to making checkbox selections stick 
xtype: selection (string) 
name: ./foo (string) 
fieldValue: true (string) 

ответ

17

Да, это выглядит как the documentation немного шаткий. Я сделал некоторые эксперименты, и это сочетание свойств работает для меня:

defaultValue (String) true 
fieldLabel (String) Foo Mode 
inputValue (String) false 
jcr:primaryType (Name) cq:Widget 
name (String) ./foomode 
type (String) checkbox 
xtype (String) selection 

Свойство DefaultValue, как представляется, является ключевым.

У вас есть cq: Виджет для вашего основного типа, а не виджет, не так ли?

+2

Большое вам спасибо. Я бы не разработал эту комбинацию самостоятельно. C'mon, Adobe, лучше управляйте своей документацией! –

+0

Я столкнулся с одной и той же проблемой и усугубил неточную документацию CQ. Глядя глубже в это, приведенная выше комбинация успешно отобразит флажок «checked» в диалоговом окне, но это не приведет к установке базового свойства JCR, представляющего этот элемент флажка, т. Е. Для этого флажка не создано ./foomode, он будет создан только после того, как пользователь получит доступ к диалоговому окну и нажат кнопку «ОК», даже если он не внесет никаких изменений. –

+0

Свойства узла не создаются до тех пор, пока не будет создан запрос POST. Кроме того, помните, что флажок не отправлен, если он не установлен. Это не функция CQ, она находится в спецификациях HTML и реализована браузером. Если вы хотите создать свойство узла независимо от того, установлен флажок или нет, используйте суффикс @UseDefaultWhenMissing SlingPostServlet. См. Документы Apache Sling: https://sling.apache.org/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html#usedefaultwhenmissing. – nateyolles

5

Чтобы это сохраняется как логическое ...

<nodeName 
jcr:primaryType="cq:Widget" 
fieldLabel="check this nodename" 
name="./nodeName" 
defaultValue="{Boolean}false" 
type="checkbox" 
xtype="selection" /> 

<nodeNameHint 
    jcr:primaryType="cq:Widget" 
    ignoreData="{Boolean}true" 
    name="./[email protected]" 
    value="Boolean" 
    xtype="hidden"/> 
1

Чтобы установить флажок со значением по умолчанию проверяемого и сохранить свойство как тип логического свойства в JCR (а не строки) используйте следующие классические настройки пользовательского интерфейса:

<myCheckbox 
    jcr:primaryType="cq:Widget" 
    fieldLabel="My Checkbox" 
    name="./myCheckbox" 
    value="true" 
    defaultValue="true" 
    checkboxBoolTypeHint="{Boolean}true" 
    type="checkbox" 
    xtype="selection"/> 

Или используйте следующие настройки в граните сенсорный пользовательский интерфейс:

<myCheckbox 
    jcr:primaryType="nt:unstructured" 
    sling:resourceType="granite/ui/components/foundation/form/checkbox" 
    text="My Checkbox" 
    name="./myCheckbox" 
    value="true" 
    checked="true"/> 
<myCheckboxType 
    jcr:primaryType="nt:unstructured" 
    sling:resourceType="granite/ui/components/foundation/form/hidden" 
    name="./[email protected]" 
    value="Boolean"/> 

Подробную запись и демонстрацию можно найти на странице http://www.nateyolles.com/blog/2015/11/aem-checkboxes-using-sling-post-servlet.

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