Highlighted

String[] type for Multivalued Properties - AEM

MeenakshiP

06-12-2016

[Thread Edited By Adobe]

/*Don’t forget to meet and greet your fellow peers virtually by telling them about yourself here

Go ahead and to it now: https://adobe.ly/3eDnB4v */

 

Actual Post:

Hi,

I have a question regarding multivalued property of type granite/ui/components/foundation/form/multifield in AEM.
My understanding is that it will always be stored in AEM with String[] Multi Array type for a given node's property, no matter if user provides 1 or greater than 1 property values.

But I have observed that some values are getting stored with Single String data type if I provide one value And stored as String[] multi value type in crxde, if I enter more than 1 values.

Why AEM does not store all values in unique way? i.e. By setting data type as; String[] multi value, if it's sling:resourceType is defined as multifield.

Is it a defect?

Thanks.

desktop_exl_promo_600x100_weempoweryou.png

Replies

Highlighted

kautuk_sahni

Community Manager

07-12-2016

I would request you to please share your observation with daycare till i get response from internal team.

~kautuk

Highlighted

Veena_Vikraman

08-12-2016

Hi Meenakshi

     For xtype like multifield, if you are saving only 1 value in property, it will get saved as String. This behavior is there from the beginning itself, (I have started from  5.4  )

Thanks

Veena

Highlighted

leeasling

08-12-2016

You need to set the typeHint in the dialog

typeHint="String"

This will save the value as a String[] regardless of 1 or multiple values.

Highlighted

MeenakshiP

08-12-2016

Thanks. Is there any property key to define directly at node level in crxde to set it as always String and overriding default current behavior?

I tried typeHint as property key but that did not work.

Highlighted

leeasling

08-12-2016

Delete the property that is currently just a "String" and then try again (this my answer was for classic UI).  For Touch UI, use this:

<myFieldString jcr:primaryType="nt:unstructured" sling:resourceType="granite/ui/components/foundation/form/hidden" name="./myField@TypeHint" value="String"/>
Highlighted

MeenakshiP

08-12-2016

I did not get you. I need to show this as one of the metadata for asset.

This is my current property configuration:

<keywords jcr:primaryType="nt:unstructured"
                                    sling:resourceType="granite/ui/components/foundation/form/multifield"
                                    fieldLabel="Keywords"
                                    metaType="mvtext"
                                    name="./jcr:content/metadata/dc:subject"
                                    renderReadOnly="true">
                                    <field
                                        jcr:primaryType="nt:unstructured"
                                        sling:resourceType="granite/ui/components/foundation/form/textfield"
                                        name="./jcr:content/metadata/dc:subject"/>
                                </keywords>