Выпадающие значения, выбранные в классическом диалоге, не отображают одно и то же значение в диалоге сенсорного интерфейса

Мы создали Classic UI Dialog и Touch UI Dialog с выпадающим виджетом, который отображает динамические значения. Мы использовали свойство optionsProvider для заполнения этих значений в классическом пользовательском интерфейсе и источнике данных в пользовательском интерфейсе touch.

Это отлично работает; Однако после того, как мы выберем раскрывающееся значение в классическом пользовательском интерфейсе и откроем диалоговое окно в режиме сенсорного интерфейса, диалоговое окно сенсорного интерфейса не отображает выбранное значение в классическом диалоговом окне. То же самое происходит, когда мы пытаемся сохранить значение в диалоге сенсорного интерфейса и открыть классический интерфейс. Более того, независимо от того, какие выбранные факты были сохранены в узле компонента страницы, эти диалоги не могут выбрать значение из сохраненного свойства при сохранении в другом режиме диалога.

Это происходит из-за слушателей, так как я могу получить выпадающее значение в другом компоненте со статическими значениями?

Пожалуйста, помогите мне с этим вопросом.

Атрибут Classic UI,

<productCategory
                        jcr:primaryType="cq:Widget"
                        fieldLabel="select Product Category"
                        name="./productCategory"
                        optionsProvider="function(){ &#xa;    var categories = []; &#xa;    var tags = '/etc/tags/mecommerce/categories'&#xa;    var url = CQ.HTTP.noCaching(tags+'.infinity.json'); &#xa;    var categoriesList = CQ.HTTP.eval(url); //DAM Url&#xa;     &#xa;for(var name in categoriesList){ //Looping the node structure&#xa;&#xa;/*&#xa;Each image will have the meta data in it's jcr:content. This meta data consists of many values like, its &#xa;type, size, fileFormat etc., We are checking the format is image or not and adding&#xa;*/&#x9;&#x9;&#xa;        if(categoriesList[name]['jcr:title']){&#xa;&#x9;&#x9;&#x9;var list = {}; &#xa;                        // each option should contain text and value&#xa;                  list['text'] = categoriesList[name]['jcr:title']; &#xa;            list['value'] = categoriesList[name]['jcr:title']; &#xa;&#x9;&#x9;&#x9;categories.push(list); &#xa;        } &#xa;    } &#xa;    return categories; // returns the JSON&#xa;}"
                        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));
    }
Другие вопросы по тегам