2

情况:

我们有一个 AEM 6.4 Touch UI 对话框和许多通过该对话框创建的现有组件实例。

现在我们要在对话框中添加一个额外的布尔属性(复选框)。

新属性的默认值应该是 true/checked。

预期结果:

当编辑器打开现有组件的更新对话框时,我希望对话框显示选中的新复选框,因为这是默认值,并且 JCR 不包含现有组件的值。

实际结果:

该对话框显示未选中JCR 中此属性没有值的现有组件的复选框。

令人惊讶的是,对话框显示为新创建的组件选中的复选框!

有任何想法吗?谢谢。

.content.xml下面文件中复选框的片段。

<newProperty
  jcr:primaryType="nt:unstructured"
  sling:resourceType="granite/ui/components/coral/foundation/form/checkbox"
  checked="{Boolean}true"
  name="./newProperty"
  text="The recently added new property"
  uncheckedValue="{Boolean}false"
  value="{Boolean}true"
/>
4

3 回答 3

1

它肯定需要 JS 验证,因为对话框中缺少该值是错误的。

于 2020-02-21T14:05:30.773 回答
0

您的示例应该始终有效,不需要额外的 js 或属性。当您说该属性没有现有的“价值”时,您的意思是该属性不存在还是为空?因为空属性仍然有一个值,在这种情况下是一个空字符串,导致它被读取为 false 并且复选框为空。新组件没有此属性,导致显示默认值。如果这不能按设计工作,您是否可以通过添加组件的所有当前属性来扩展您的示例?

于 2020-05-03T16:50:27.057 回答
-1

@John Goofy - 您只需要添加以下属性

'ignoreData={Boolean}true'

然后,您的节点变为

<newProperty
  jcr:primaryType="nt:unstructured"
  sling:resourceType="granite/ui/components/coral/foundation/form/checkbox"
  checked="{Boolean}true"
  name="./newProperty"
  text="The recently added new property"
  uncheckedValue="{Boolean}false"
  value="{Boolean}true"
  ignoreData="{Boolean}true"
/>

请让我知道,如果它不适合你。

于 2020-02-24T07:12:53.243 回答