AEM/CQ:复选框被选中保存一个布尔值,如何保存一个布尔值设置为false,如果我们未检查?
问题描述:
例如,我创建了一个复选框下面的属性AEM/CQ:复选框被选中保存一个布尔值,如何保存一个布尔值设置为false,如果我们未检查?
<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"/>
如果我们检查/启用该复选框它显示属性“样本”像下面 样品布尔真(工作正常) 如果我们未检查/禁用复选框,然后它没有显示属性“样本”
后市展望:我想显示样品布尔值false,如果我们未检查/禁用复选框
答
你可能要检查的吊带POST的Servlet的文档。当你提交对话时,这个servlet被调用。它叫做后缀您可以在对话框中使用给予POST的servlet什么的领域正在做一些提示。例如
一个这样的后缀是@UseDefaultWhenMissing
后缀,应你正在寻找什么。
从文档:
如上所述,如果@DefaultValue提供了一种用于一个特定的参数没有值才会生效。然而,在某些情况下,如HTML复选框,这是不够的,因为该参数不提交的。为了处理这种情况,你可以使用@UseDefaultWhenMissing后缀参数。
<form method="POST" action="/content/page/first" enctype="multipart/form-data">
<input name="queryIgnoreNoise" class="input" type="checkbox" value="true"/>
<input type="hidden" name="[email protected]" value="false"/>
<input type="hidden" name="[email protected]" value="true"/>
</form>
所以,你必须在你的对话框定义做的是两个额外的隐藏字段添加:
<checkbox1DefaultValue
jcr:primaryType="cq:Widget"
name="./[email protected]"
value="{Boolean}false"
xtype="hidden"/>
<checkbox1UseDefaultWhenMissing
jcr:primaryType="cq:Widget"
name="./[email protected]"
value="{Boolean}true"
xtype="hidden"/>
狠抓字段的名称:
./[email protected]
和./[email protected]
。
这是该复选框(sample
)加上两个必需的后缀名的名字:@DefaultValue
和@UseDefaultWhenMissing
。
有几个更漂亮的后缀就可以了吊带文档中读到:
太谢谢你了。它是通过使用默认值和UseDefaultWhenMissing后缀创建两个隐藏字段的工作! – user6041432