Adobe 如何在AEM Touch UI对话框中引入具有默认值的附加字段?

Adobe 如何在AEM Touch UI对话框中引入具有默认值的附加字段?,adobe,aem,aem-touch-ui,Adobe,Aem,Aem Touch Ui,情况: 我们有一个AEM 6.4 Touch UI对话框和许多通过该对话框创建的现有组件实例 现在,我们想在对话框中添加一个额外的布尔属性(复选框) 新属性的默认值应为true/选中 预期结果: 当编辑器打开现有组件的更新对话框时,我希望该对话框显示选中的新复选框,因为这是默认值,JCR不包含现有组件的值 实际结果: 对于JCR中没有此属性值的现有组件,该对话框显示未选中的复选框 令人惊讶的是,对话框中显示了为新创建的组件选中的复选框 有什么想法吗?谢谢。 下面的.content.xml文件中的

情况:

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

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

新属性的默认值应为true/选中

预期结果:

当编辑器打开现有组件的更新对话框时,我希望该对话框显示选中的新复选框,因为这是默认值,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"
/>


它当然需要JS验证,因为缺少值对于对话框来说是错误的。

@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"
/>


如果对您不起作用,请告诉我。

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

您需要添加一个侦听器并启用必要的复选框谢谢,但为什么会这样呢?这是一个bug还是预期的行为?我在文档中找不到AEM应用默认值和不应用默认值时的任何提示,因此我的假设是,当JCR中的值为“空”时,它总是这样做,但这似乎是错误的。谢谢,但为什么会这样?这是一个bug还是预期的行为?我在文档中找不到AEM应用默认值和不应用默认值时的任何提示,因此我的假设是,当JCR中的值为“空”时,它将始终这样做,但这似乎是错误的。根据,这将始终忽略JCR,并始终根据默认值选中/取消选中复选框。我需要一些不同的东西:只有当JCR中没有保存值时,复选框才应该使用默认值;如果JCR中有一个值,则复选框应使用该值。@johngofy-请尝试ignoreData=“{Boolean}false”好吗?我测试过,默认情况下,它采用“默认值”,一旦保存/编写值,它就会拾取该值。它应该有用!