【问题标题】:Getting Default Checked Checkbox in CQ5在 CQ5 中获取默认选中复选框
【发布时间】:2012-05-07 14:07:09
【问题描述】:

我试图在编辑时在组件对话框上设置一个默认选中复选框。以下是该字段的属性:

jcr:primaryType: widget
checked: true (boolean) *Documentation says this determines default checked status
type: checkbox (string) *read this as a fix to making checkbox selections stick
xtype: selection (string)
name: ./foo (string)
fieldValue: true (string)

【问题讨论】:

    标签: aem


    【解决方案1】:

    是的,看起来the documentation 有点不靠谱。我做了一些实验,这种属性组合对我有用:

    defaultValue (String) true
    fieldLabel (String) Foo Mode
    inputValue (String) false
    jcr:primaryType (Name) cq:Widget
    name (String) ./foomode
    type (String) checkbox
    xtype (String) selection
    

    defaultValue 属性似乎是关键。

    您的主要类型确实有 cq:Widget,而不是小部件,不是吗?

    【讨论】:

    • 非常感谢。我不会自己设计这种组合。来吧,Adobe,更好地管理您的文档!
    • 我遇到了完全相同的问题,并且由于不精确的 CQ 文档而变得更糟。深入研究一下,上述组合将成功地在 Dialog 上呈现“选中”复选框,但这不会导致设置表示此复选框元素的底层 JCR 属性,即没有为该复选框预先创建 ./foomode 属性,它只会在用户访问对话框并点击“确定”按钮后创建,即使没有进行任何更改。
    • 在 POST 请求创建节点属性之前不会创建它们。另外,请记住,除非选中,否则不会提交复选框。这不是 CQ 的功能,它在 HTML 规范中并由浏览器实现。如果无论是否选中复选框都想创建节点属性,请使用 SlingPostServlet 的 @UseDefaultWhenMissing 后缀。请参阅 Apache Sling 文档:sling.apache.org/documentation/bundles/…
    【解决方案2】:

    要将其保存为布尔值...

    <nodeName
    jcr:primaryType="cq:Widget" 
    fieldLabel="check this nodename" 
    name="./nodeName" 
    defaultValue="{Boolean}false" 
    type="checkbox"
    xtype="selection" />
    
    <nodeNameHint
      jcr:primaryType="cq:Widget"
      ignoreData="{Boolean}true"
      name="./nodeName@TypeHint"
      value="Boolean"
      xtype="hidden"/>
    

    【讨论】:

      【解决方案3】:

      要将复选框设置为选中的默认值将属性保存为 JCR 中的布尔属性类型(而不是字符串),请使用以下经典 UI 设置:

      <myCheckbox
          jcr:primaryType="cq:Widget"
          fieldLabel="My Checkbox"
          name="./myCheckbox"
          value="true"
          defaultValue="true"
          checkboxBoolTypeHint="{Boolean}true"
          type="checkbox"
          xtype="selection"/>
      

      或者在 Granite Touch UI 中使用以下设置:

      <myCheckbox
          jcr:primaryType="nt:unstructured"
          sling:resourceType="granite/ui/components/foundation/form/checkbox"
          text="My Checkbox"
          name="./myCheckbox"
          value="true"
          checked="true"/>
      <myCheckboxType
          jcr:primaryType="nt:unstructured"
          sling:resourceType="granite/ui/components/foundation/form/hidden"
          name="./myCheckbox@TypeHint"
          value="Boolean"/>
      

      http://www.nateyolles.com/blog/2015/11/aem-checkboxes-using-sling-post-servlet 有详细的文章和演示。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-04-29
        • 2013-09-26
        • 2018-12-31
        • 2017-03-27
        • 2015-10-05
        相关资源
        最近更新 更多