在经典对话框中选择的下拉值在触摸 ui 对话框中不显示相同的值

Drop down values selected in classic dialog doesn't show same value in touch ui dialog

我们创建了一个经典 UI 对话框和触摸 UI 对话框,带有一个显示动态值的下拉小部件。我们使用 optionsProvider 属性 在经典 ui 和数据源中填充这些值 ui.

这很好用;然而,在我们select 经典 ui 中的下拉值并以触摸 ui 模式打开对话框后,触摸 ui 对话框不会显示 selected经典 ui 对话框中的值。当我们尝试在 touch ui 对话框中保存值并打开经典 ui 对话框时,情况也是如此。此外,无论 selected 值是否保存在页面的组件节点中,这些对话框在以其他对话框模式保存时无法从保存的 属性 中选取值。

发生这种情况是因为监听器,因为我能够使用静态值获取其他组件中的下拉值吗?

请帮我解决这个问题。

经典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属性,

<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>

问题与数据源有关。将值添加到地图时,键和值不相同。更正后问题得到解决。

 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));
    }