2017-05-31 15 views
2

例如,我创建了一个复选框下面的属性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&lt;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,如果我们未检查/禁用复选框

回答

5

你可能要检查的吊带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

有几个更漂亮的后缀就可以了吊带文档中读到:

https://sling.apache.org/documentation/bundles/manipulating-content-the-slingpostservlet-servlets-post.html

+1

太谢谢你了。它是通过使用默认值和UseDefaultWhenMissing后缀创建两个隐藏字段的工作! – user6041432

相关问题