Выпадающие значения, выбранные в классическом диалоге, не отображают одно и то же значение в диалоге сенсорного интерфейса
Мы создали Classic UI Dialog и Touch UI Dialog с выпадающим виджетом, который отображает динамические значения. Мы использовали свойство optionsProvider для заполнения этих значений в классическом пользовательском интерфейсе и источнике данных в пользовательском интерфейсе touch.
Это отлично работает; Однако после того, как мы выберем раскрывающееся значение в классическом пользовательском интерфейсе и откроем диалоговое окно в режиме сенсорного интерфейса, диалоговое окно сенсорного интерфейса не отображает выбранное значение в классическом диалоговом окне. То же самое происходит, когда мы пытаемся сохранить значение в диалоге сенсорного интерфейса и открыть классический интерфейс. Более того, независимо от того, какие выбранные факты были сохранены в узле компонента страницы, эти диалоги не могут выбрать значение из сохраненного свойства при сохранении в другом режиме диалога.
Это происходит из-за слушателей, так как я могу получить выпадающее значение в другом компоненте со статическими значениями?
Пожалуйста, помогите мне с этим вопросом.
Атрибут Classic UI,
<productCategory
jcr:primaryType="cq:Widget"
fieldLabel="select Product Category"
name="./productCategory"
optionsProvider="function(){ 
 var categories = []; 
 var tags = '/etc/tags/mecommerce/categories'
 var url = CQ.HTTP.noCaching(tags+'.infinity.json'); 
 var categoriesList = CQ.HTTP.eval(url); //DAM Url
 
for(var name in categoriesList){ //Looping the node structure

/*
Each image will have the meta data in it's jcr:content. This meta data consists of many values like, its 
type, size, fileFormat etc., We are checking the format is image or not and adding
*/		
 if(categoriesList[name]['jcr:title']){
			var list = {}; 
 // each option should contain text and value
 list['text'] = categoriesList[name]['jcr:title']; 
 list['value'] = categoriesList[name]['jcr:title']; 
			categories.push(list); 
 } 
 } 
 return categories; // returns the JSON
}"
type="select"
xtype="selection"/>
Атрибут UI Touch,
<productCategory
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/select"
fieldLabel="select Product Category"
name="./productCategory">
<datasource
jcr:primaryType="nt:unstructured"
sling:resourceType="/apps/mecommerce/commerce/components/content/categoryStandardProductDetail/datasources/categories"
addNone="{Boolean}true"/>
</productCategory>
1 ответ
Проблема с источником данных. Когда значение добавляется на карту, ключ и значение не совпадают. После исправления проблема была решена.
List<KeyValue> categories = new ArrayList<KeyValue>();
for (Iterator<Resource> it = categoryRes.listChildren(); it.hasNext();) {
Resource category = it.next();
ValueMap vm = ResourceUtil.getValueMap(category);
String title = vm.get("jcr:title", category.getName());
String value = vm.get("jcr:title", category.getName());
if (!title.equals("*")) {
value = value;
}
categories.add(new KeyValue(category.getName(), value));
}
Изменено как,
List<KeyValue> categories = new ArrayList<KeyValue>();
if (dsCfg.get("addNone", false)) {
categories.add(new KeyValue("", ""));
}
for (Iterator<Resource> it = categoryRes.listChildren(); it.hasNext();) {
Resource category = it.next();
ValueMap vm = ResourceUtil.getValueMap(category);
String title = vm.get("jcr:title", category.getName());
String value = vm.get("jcr:title", category.getName());
if (!title.equals("*")) {
value = value;
}
categories.add(new KeyValue(value, value));
}