根据the documentation of the TagInputField
widget,应该可以限制用户从AEM标签中的每个命名空间使用的标签数量。
namespaces
:数组应显示和允许的标记命名空间列表。如果为空,则允许所有可用的命名空间。否则是一个字符串数组(命名空间名称)或更多配置一个对象数组,如下所示:
{
name: "namespace",
maximum: 1 // maximum number of tags allowed from this namespace; if -1 no limit (default)
}
但是当我尝试这样做时它似乎不起作用。
在我的场景中,我想将用户限制在一个命名空间中,并且只允许她/他选择一个标记。
当我仅在dialog.xml
中指定命名空间时,namespaces
设置得到尊重:
<tags
jcr:primaryType="cq:Widget"
allowBlank="true"
fieldLabel="Tags"
namespaces="[topics]"
name="./tags"
xtype="tags"/>
小部件仅显示my-namespace
当我尝试限制此命名空间中的标记数时,麻烦就开始了。
<tags
jcr:primaryType="cq:Widget"
allowBlank="true"
fieldLabel="Tags"
namespaces="[{name: "topics", maximum: 1}]"
name="./tags"
xtype="tags"/>
这简单地被忽略了,在使用vault将内容导入AEM之后,似乎已经关闭了。当我在CRXDE中检查它时,它看起来像一个带有两个值的String数组。
对话框的行为似乎证实这不仅仅是它在CRXDE中显示的方式的问题,因为小部件没有显示命名空间。
即使我手动编辑CRXDE中的String数组以获得正确的值(请参见下面的屏幕截图),该对话框也不会获取任何名称空间(与上面相同)
有没有人以上述方式运用这个小部件?我做错了还是这个错误?
答案 0 :(得分:0)
我的同事刚回答我的回答。事实证明我误解了文档。配置(如果以复杂格式使用)实际上需要JCR节点的嵌套结构。
因此,在我的dialog.xml
我需要一个额外的节点:
<tags
jcr:primaryType="cq:Widget"
allowBlank="true"
fieldLabel="Tags"
name="./tags"
xtype="tags">
<namespaces jcr:primaryType="cq:WidgetCollection">
<topics jcr:primaryType="nt:unstructured" maximum="1" name="topics" />
</namespaces>
</tags>
答案 1 :(得分:0)
<tags
jcr:primaryType="cq:Widget"
fieldLabel="Tags"
name="./tags"
xtype="tags">
<namespaces jcr:primaryType="cq:WidgetCollection">
<topic1 jcr:primaryType="nt:unstructured" maximum="3" name="topic1" />
<topic2 jcr:primaryType="nt:unstructured" maximum="3" name="topic2" />
</namespaces>
</tags>
另请查看这篇旧帖子: - https://forums.adobe.com/thread/1175413
//
<locationTag jcr:primaryType="cq:Widget" allowBlank="{Boolean}false"
cls="cq-propsdialog-tags" fieldLabel="Campus Location"
fieldDescription="Specify a campus location" name="./locationID/cq:tags"
xtype="tags">
<namespaces jcr:primaryType="cq:WidgetCollection">
<ns1 jcr:primaryType="nt:unstructured" maximum="1" name="campuses" />
</namespaces>
</locationTag>
我希望这会对你有所帮助。
谢谢和问候 Kautuk Sahni