AEM/CQ: Checkbox被选中保存布尔值TRUE,如果我们取消选中如何保存布尔值FALSE?
AEM/CQ: Checkbox is checked saves a Boolean value of TRUE,How to save a Boolean value as FALSE if we Unchecked?
例如,我创建了一个具有以下属性的复选框
<checkbox1
jcr:primaryType="cq:Widget"
checked="false"
defaultValue="false"
fieldLabel="Sample"
inputValue="true"
name="./sample"
checkboxBoolTypeHint="{Boolean}true"
type="checkbox"
xtype="selection">
<listeners
jcr:primaryType="nt:unstructured"
check="function(isChecked){var panel = this.findParentByType('panel'); var fields = panel.find('name', './sample'); for (var i=0;i<fields.length; i++) {if (fields[i].xtype == 'hidden') { if (isChecked.checked) {fields[i].setDisabled(true);} else {fields[i].setDisabled(false);}}}}"/>
</checkbox1>
<hiddenCheckbox1
jcr:primaryType="cq:Widget"
disabled="{Boolean}true"
ignoreData="{Boolean}true"
name="./sample"
value="{Boolean}false"
xtype="hidden"/>
如果我们 checked/enabled 复选框显示 属性 "Sample" 如下所示
sample Boolean true(工作正常)
如果我们 Unchecked/disable 复选框那么它不会显示 属性 "Sample"
期望:如果我们 Unchecked/disable 复选框
我想显示 示例布尔值 false
您可能需要查看 Sling POST Servlet 的文档。当您提交对话时调用此 servlet。它有一个叫做 Suffixes 的东西,你可以在你的对话框中使用它来给 POST servlet 一些关于你的字段正在做什么的提示。
例如,一个这样的后缀是 @UseDefaultWhenMissing
后缀,它应该正是您要查找的内容。
来自文档:
As described above, @DefaultValue only takes effect if no value is provided for a particular parameter. However, in some cases, such as HTML checkboxes, this isn't sufficient because the parameter isn't submitted at all. To handle this scenario, you can use the @UseDefaultWhenMissing suffixed parameter.
<form method="POST" action="/content/page/first" enctype="multipart/form-data">
<input name="queryIgnoreNoise" class="input" type="checkbox" value="true"/>
<input type="hidden" name="queryIgnoreNoise@DefaultValue" value="false"/>
<input type="hidden" name="queryIgnoreNoise@UseDefaultWhenMissing" value="true"/>
</form>
所以您在对话框定义中必须做的是添加两个额外的隐藏字段:
<checkbox1DefaultValue
jcr:primaryType="cq:Widget"
name="./sample@DefaultValue"
value="{Boolean}false"
xtype="hidden"/>
<checkbox1UseDefaultWhenMissing
jcr:primaryType="cq:Widget"
name="./sample@UseDefaultWhenMissing"
value="{Boolean}true"
xtype="hidden"/>
密切注意字段名称:
./sample@DefaultValue
和 ./sample@UseDefaultWhenMissing
.
它是复选框的名称(sample
)加上两个必需后缀的名称:@DefaultValue
和 @UseDefaultWhenMissing
。
您可以在 Sling 文档中阅读更多不错的后缀:
例如,我创建了一个具有以下属性的复选框
<checkbox1
jcr:primaryType="cq:Widget"
checked="false"
defaultValue="false"
fieldLabel="Sample"
inputValue="true"
name="./sample"
checkboxBoolTypeHint="{Boolean}true"
type="checkbox"
xtype="selection">
<listeners
jcr:primaryType="nt:unstructured"
check="function(isChecked){var panel = this.findParentByType('panel'); var fields = panel.find('name', './sample'); for (var i=0;i<fields.length; i++) {if (fields[i].xtype == 'hidden') { if (isChecked.checked) {fields[i].setDisabled(true);} else {fields[i].setDisabled(false);}}}}"/>
</checkbox1>
<hiddenCheckbox1
jcr:primaryType="cq:Widget"
disabled="{Boolean}true"
ignoreData="{Boolean}true"
name="./sample"
value="{Boolean}false"
xtype="hidden"/>
如果我们 checked/enabled 复选框显示 属性 "Sample" 如下所示 sample Boolean true(工作正常) 如果我们 Unchecked/disable 复选框那么它不会显示 属性 "Sample"
期望:如果我们 Unchecked/disable 复选框
我想显示 示例布尔值 false您可能需要查看 Sling POST Servlet 的文档。当您提交对话时调用此 servlet。它有一个叫做 Suffixes 的东西,你可以在你的对话框中使用它来给 POST servlet 一些关于你的字段正在做什么的提示。
例如,一个这样的后缀是 @UseDefaultWhenMissing
后缀,它应该正是您要查找的内容。
来自文档:
As described above, @DefaultValue only takes effect if no value is provided for a particular parameter. However, in some cases, such as HTML checkboxes, this isn't sufficient because the parameter isn't submitted at all. To handle this scenario, you can use the @UseDefaultWhenMissing suffixed parameter.
<form method="POST" action="/content/page/first" enctype="multipart/form-data">
<input name="queryIgnoreNoise" class="input" type="checkbox" value="true"/>
<input type="hidden" name="queryIgnoreNoise@DefaultValue" value="false"/>
<input type="hidden" name="queryIgnoreNoise@UseDefaultWhenMissing" value="true"/>
</form>
所以您在对话框定义中必须做的是添加两个额外的隐藏字段:
<checkbox1DefaultValue
jcr:primaryType="cq:Widget"
name="./sample@DefaultValue"
value="{Boolean}false"
xtype="hidden"/>
<checkbox1UseDefaultWhenMissing
jcr:primaryType="cq:Widget"
name="./sample@UseDefaultWhenMissing"
value="{Boolean}true"
xtype="hidden"/>
密切注意字段名称:
./sample@DefaultValue
和 ./sample@UseDefaultWhenMissing
.
它是复选框的名称(sample
)加上两个必需后缀的名称:@DefaultValue
和 @UseDefaultWhenMissing
。
您可以在 Sling 文档中阅读更多不错的后缀: