“true”/“false”值未在Selection xtype - Classic UI对话框中填充 - Adob​​e AEM / CQ

时间:2016-08-02 13:06:22

标签: cq5 aem

我有一个经典的UI对话框。这在对话框中有一个下拉列表,其中“true”/“false”作为选项

<mydropdown
      jcr:primaryType="cq:Widget"
      allowBlank="{Boolean}false"
      fieldLabel="My Dropdown"
      name="./dropdownValue"
      type="select"
      xtype="selection">
      <options jcr:primaryType="cq:WidgetCollection">
         <test
             jcr:primaryType="cq:Widget"
             text="True"
             value="true"/>
         <test_x0020_1
             jcr:primaryType="cq:Widget"
             text="False"
             value="false"/>
          <test_x0020_2
             jcr:primaryType="cq:Widget"
             text="someothervaluetext"
             value="someothervalue"
       </options>
</mydropdown>

JCR结构将值保存为String“true”,“false”。当用户编辑对话框时,应在字段中填充该值。 “true”,“false”值没有填充,而“someothervalue”工作正常。

检查了libs中的 Selection.js ,下面的代码负责在对话框中填充数据

 var count = this.comboBox.store.getTotalCount();
 var i = 0;
 for (; i < count; i++) {
      var data = this.comboBox.store.getAt(i).data;
      if (data.value == this.value) {  // Here data.value is coming as boolean
             this.hiddenField.setValue(data.value);
             this.comboBox.setValue(data.text);
             break;
       }
  }

data.value将以boolean的形式出现,但在JCR中,值将存储为字符串。因此,条件评估为false并且未设置值。

2 个答案:

答案 0 :(得分:2)

我看到的唯一问题是name属性的值。通常,名称以./为前缀,以便在节点上设置属性及其对应的值。如果名称不以./开头,则省略。

试试这个,它应该有效。

name="./dropdownValue"

Sling Post Servlet documentation详细介绍了Sling Post Servlet的工作原理。

答案 1 :(得分:0)

使用Adobe Day Care进行检查。 Adobe证实,这是AEM 6.1中的一个错误。这已在AEM 6.2中修复。以下是花岗岩虫参考

  

CQ-64223 - cq:Widget xtype =选择类型= select不能包含选项   有价值&#34;真&#34;和&#34;假&#34;

对于早期版本,可以从Adobe请求修补程序。对于我的情况&#34; 1&#34;,&#34; 0&#34;适合我,因为我必须用角度ng-if/ng-show

来评估它