Как создать радио-кнопку в сенсорном диалоге aem 6
У меня есть компонент сенсорного интерфейса, для которого я создаю диалоговое окно в AEM 6. У меня есть требование создать 2 переключателя в сенсорном диалоговом окне, и если выбрана одна из них, соответствующее значение выбранного переключателя должно быть отображается. Однако я не понимаю, как создать параметры переключателя. Я реализовал то же самое в классическом диалоге, где используются xtype = selection и type = radiogroup, но я не понимаю, как создать его в сенсорном диалоге
3 ответа
Вы можете использовать форму ввода - радио. Чтобы создать группу переключателей, присвойте всем переключателям одинаковое имя. Тип ресурса для радиовхода: /libs/granite/ui/components/foundation/form/radio
,
Образец Json из узлов:
"hideinnav": {
"jcr:primaryType": "nt:unstructured",
"name": "./hideInNav",
"text": "Hide in Navigation",
"value": "true",
"cq-msm-lockable": "hideInNav",
"sling:resourceType": "/libs/granite/ui/components/foundation/form/radio",
"renderReadOnly": true
},
"showinNav": {
"jcr:primaryType": "nt:unstructured",
"name": "./hideInNav",
"text": "Show in Navigation",
"value": "false",
"cq-msm-lockable": "hideInNav",
"sling:resourceType": "/libs/granite/ui/components/foundation/form/radio",
"renderReadOnly": true
}
В отличие от виджета "Выбор классического пользовательского интерфейса", в котором кнопки устанавливаются в узле параметров, переключатели являются независимыми и могут использоваться непосредственно в контейнерах.
Вот пример радиогруппы для CoralUI v1/v2. radiogroup
необязательно, radio
виджеты сами по себе все равно будут работать. Группа нужна только если вы хотите иметь метку для группы.
<radioGroup jcr:primaryType="nt:unstructured"
name="./type"
text="Fruit"
required="{Boolean}true"
sling:resourceType="granite/ui/components/foundation/form/radiogroup"
renderReadOnly="{Boolean}true">
<items jcr:primaryType="nt:unstructured">
<radioApple jcr:primaryType="nt:unstructured"
name="./fruit"
text="Apple"
value="apple"
cq-msm-lockable="fruit"
sling:resourceType="granite/ui/components/foundation/form/radio"
renderReadOnly="{Boolean}true"/>
<radioPear jcr:primaryType="nt:unstructured"
name="./fruit"
text="Pear"
value="pear"
cq-msm-lockable="fruit"
sling:resourceType="granite/ui/components/foundation/form/radio"
renderReadOnly="{Boolean}true"/>
<radioDefaultValue jcr:primaryType="nt:unstructured"
name="./fruit@DefaultValue"
value="apple"
sling:resourceType="granite/ui/components/foundation/form/hidden"/>
<radioDefaultWhenMissing jcr:primaryType="nt:unstructured"
name="./fruit@UseDefaultWhenMissing"
value="true"
sling:resourceType="granite/ui/components/foundation/form/hidden"/>
</items>
</radioGroup>
ПРИМЕЧАНИЕ. Если вам нужно установить значение по умолчанию еще до того, как вы откроете диалоговое окно, вам нужно определить его в шаблоне (если это диалоговое окно страницы) или для компонента.
Для компонента установить значение по умолчанию apple
Вы бы добавили это в .content.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="cq:Component"
jcr:title="Fruit Component"
componentGroup="My App Group"
sling:resourceSuperType="foundation/components/parbase">
<cq:template jcr:primaryType="nt:unstructured" fruit="apple"/>
</jcr:root>
Смотрите также:
- http://docs.adobe.com/docs/en/aem/6-0/develop/ref/granite-ui/api/jcr_root/libs/granite/ui/components/foundation/form/radiogroup/index.html
- http://docs.adobe.com/docs/en/aem/6-0/develop/ref/granite-ui/api/jcr_root/libs/granite/ui/components/foundation/form/radio/index.html
НОТА:
Если вы разрабатываете для AEM 6.3, то вам нужно CoralUI3 вкус всех компонентов, т.е. вместо
granite/ui/components/foundation/form/radio
ты должен использоватьgranite/ui/components/coral/foundation/form/radio
, так далее.Подробнее о миграции на CoralUI 3 см. https://helpx.adobe.com/experience-manager/6-3/sites/developing/using/reference-materials/granite-ui/api/jcr_root/libs/granite/ui/components/legacy/coral2/migration.html.
Coral UI3 больше не поддерживает индивидуальную форму / радио. Теперь это заменено формой / радио-группой https://helpx.adobe.com/experience-manager/6-4/sites/developing/using/reference-materials/granite-ui/api/jcr_root/libs/granite/ui/components/legacy/coral2/migration.html
В Coral UI3 для создания двух переключателей вы можете сделать что-то вроде следующего:
<radioGroup
jcr:primaryType="nt:unstructured"
name=“./state“
text=“Select an Option”
sling:resourceType="granite/ui/components/coral/foundation/form/radiogroup">
<items jcr:primaryType="nt:unstructured">
<radioExpanded jcr:primaryType="nt:unstructured"
text="Expanded"
value="expanded”/>
<radioCollapse
jcr:primaryType="nt:unstructured"
text=“Collapse”
value=“collapse”/>
</radioGroup>
Группа переключателей не поддерживается в AEM 6 Touch UI. Вместо этого вы могли бы использовать раскрывающийся список? стропа: ResourceType="гранит / щ / компоненты / основа / форма / выпадающий"