我有一个经典的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结构将值保存为字符串"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,并且未设置值。
我看到的唯一问题是name
属性的值。通常,名称以./
为前缀,以便在节点上设置属性及其相应值。如果名称不是以./
开头,则会省略该名称。
试试这个就行了。
name="./dropdownValue"
Sling Post Servlet文档详细解释了Sling Post Servlet的工作原理。
已与Adobe日托中心核实。Adobe确认,这是AEM 6.1中的一个错误。AEM 6.2中对此进行了修正。以下是花岗岩错误参考
CQ-64223-CQ:小部件xtype=选择类型=选择不能包含选项值为"true"one_answers"false"
对于早期版本,可以向Adobe请求修补程序。对于我的案例"1","0"对我有效,因为我必须用角度ng-if/ng-show
来评估它