【发布时间】:2016-02-08 21:57:24
【问题描述】:
我有定义了一组 xtypes 的对话框。 xtype 之一是“选择”,类型为“选择”。 现在每个选项都有一个值类型 "String[]" ,但是当我将组件添加到页面并查看选项选择的内容时。
它被存储为“String”而不是“String[]”。
谁能告诉我如何制作/强制 xtype 将其值存储在 "String[]" 中,而不是 "String" 中。
【问题讨论】:
我有定义了一组 xtypes 的对话框。 xtype 之一是“选择”,类型为“选择”。 现在每个选项都有一个值类型 "String[]" ,但是当我将组件添加到页面并查看选项选择的内容时。
它被存储为“String”而不是“String[]”。
谁能告诉我如何制作/强制 xtype 将其值存储在 "String[]" 中,而不是 "String" 中。
【问题讨论】:
您可以使用 Sling 参数之一通过SlingPostServlet 来操作内容创建。阅读更多:here
实际上,只需在对话框中添加一个隐藏字段,该字段将传递具有预期属性类型的@TypeHint 参数。如果您的 xtype 将数据保存到例如cities 属性可以添加以下内容:
<citiesTypeHint
jcr:primaryType="cq:Widget"
name="cities@TypeHint"
value="String[]"
xtype="hidden"
【讨论】:
在 dialog.xml 中添加 xtype 时,将其添加为:
property=value
这将创建一个String 类型的property,其值为value。
如果您想要一个数组,请将值放入[],如下:
property="[value1,value2,value3,...]"
这将创建一个String[] 类型的property,其值为value。如果要添加更多,请用逗号分隔。
如果要定义dataType,为:
property="{dataType}value"
这将创建一个dataType 类型的property,其值为value。其中 dataType 可以是任何 DataType,例如 Boolean, Date, Long, etc
如果您使用 crx/de 添加属性,请单击右下角的add multi 按钮。
希望对您有所帮助...:)
【讨论】:
Mateusz Chromiński 变体几乎对我有用,除了 value="String[]" 导致空属性,所以我使用了 defaultValue="String[]" 并且它工作得非常完美。
<targetGroupsTypeHint
jcr:primaryType="cq:Widget"
name="./targetGroups@TypeHint"
defaultValue="String[]"
xtype="hidden"/>
【讨论】:
在对话框中输入以下内容:
typeHint="String[]"
【讨论】: