当前位置: 首页 > 知识库问答 >
问题:

AEM/CQ:选中复选框保存布尔值为TRUE,如果不选中复选框,如何将布尔值保存为FALSE?

伊羽
2023-03-14
<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

共有1个答案

曾飞沉
2023-03-14

您可能需要查看Sling POST servlet的文档。在提交对话框时调用此servlet。它有一种叫做后缀的东西,您可以在对话框中使用后缀来给POST servlet一些关于字段正在做什么的提示。

例如,一个这样的后缀是@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="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@usedefaultwhenmissing

您可以在Sling文档中阅读更多漂亮的后缀:

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

 类似资料:
  • 我想发送到后端如果一个输入复选框已经被选中或没有。 这是正确的做法吗?因为我有个例外: TypeMismatchException:未能将类型“java.lang.String”的值转换为所需类型“java.lang.Boolean”;嵌套异常是java.lang.IllegalArgumentException:无效的布尔值[2] 我在后端以这种方式读取参数:

  • 我不确定这是否是vuetify的一个bug,或者可能我不了解关于Vue的一些基本知识。我试图使用它的道具来设置vuetify复选框的值。我没有使用,因为我不需要双向绑定。我只希望它的检查状态是基于一个布尔在我的组件。 如果我在Vue dev tools中检查checkbox组件,我会看到值prop具有正确的设置,但是没有选中该框。 在我的实际应用程序中,当更改时,我确实看到复选框得到正确的prop

  • 问题内容: 我想使用选择将布尔值设置为true或false,这是我的代码: 值(proposal.formalStoryboard)正确设置为true或false, 但是在已分配值后,更改不会反映在选择框上。 我尝试了ng-value =“ true”和ng-value =“ false”而不只是值,但效果不佳。 问题答案: 编辑: 评论员指出,我的原始解决方案无法按要求工作。我已经更新了答案,以

  • 问题内容: 我有如下形式: 当我选中所有复选框并发布表单时,结果如下所示: 然后我取消选中第二个复选框并发布表单,结果是这样的: 当我取消选中第二个复选框时,是否有可能得到如下所示的结果: 有想法吗? 问题答案: 第一种方法-隐藏字段(缺点:用户可以操纵字段的值(但是也可以操纵复选框的值,因此,如果只期望1或0,这不是真正的问题)) 第二种方法-为未设置的索引分配默认值: