coral 2 composite multifield, previous dialogue value are not populating on reopening the dialogue | Community
Skip to main content
Level 2
May 29, 2024
Solved

coral 2 composite multifield, previous dialogue value are not populating on reopening the dialogue

  • May 29, 2024
  • 3 replies
  • 808 views

Recently we have upgraded from AEM 6.5.9 to AEM 6.5.20. 

Until now all the multifield what is used in our project are "granite/ui/components/foundation/form/multifield", whose content.xml and jcr properties are similar to  following:

xml: 

<general_userFilters

jcr:primaryType="nt:unstructured"

sling:resourceType="granite/ui/components/foundation/form/multifield"

composite="{Boolean}true"

fieldLabel="User Filters">

<field

jcr:primaryType="nt:unstructured"

sling:resourceType="granite/ui/components/foundation/form/fieldset"

acs-commons-nested=""

name="./userFiltersTouch">

<layout

jcr:primaryType="nt:unstructured"

sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"

method="absolute"/>

<items jcr:primaryType="nt:unstructured">

<column

jcr:primaryType="nt:unstructured"

sling:resourceType="granite/ui/components/foundation/container">

<items jcr:primaryType="nt:unstructured">

<field1

granite:class="userparenttag"

jcr:primaryType="nt:unstructured"

sling:resourceType="granite/ui/components/foundation/form/select"

id="parentTag"

name="./userParentTag">

<datasource

jcr:primaryType="nt:unstructured"

sling:resourceType="/apps/abcd/components/par/datasource"/>

</field1>

<field2

granite:class="childTag"

jcr:primaryType="nt:unstructured"

sling:resourceType="granite/ui/components/foundation/form/textfield"

fieldLabel="Question"

name="./question"/>

</items>

</column>

</items>

</field>

</general_userFilters>

 

Node structure:

Now the problem after upgrade is, when the dialogue is reopen, the previous data is not reflected and if we save the dialogue values now, the previous data is lost.

To overcome this issue the solution we,ve in mind is to make multifield and its child fields as /coral/foundation, granite/ui/components/coral/foundation/form/multifield.

As the field is composite, the values are now getting stored as nodes item1, item2 etc.... But the earlier data is still not reflecting. All previous data remains intact but of no use.

 

So to overcome this we have written a servlet which converted all previous node properties "userFiltersTouch" to nodes item like:

With this all previous data is restored in the dialogue and it is working as required. Also the rendering logic is changed to update html pages.

 

The query is :

We have lots of projects and pages which is using "granite/ui/components/foundation/form/multifield" where previous dialogue data is not reflected and on saving the dialogue, previous data is overridden with empty fields and data is lost. The multifield structure is intact but with no previous data.

 

How should we proceed with updating the multifield, whose name and fieldset will vary across project and pages. Should we report to ADOBE or go with the customization . If we go with the customization, what will be the best approach?

 

The current servlet which has been written can be made to read multifield name and its fieldset name , so that it will be compatible with other multifield, but here also the work has to be done on individual page and project basis. Lot of rework and rendering logic change.

 

Is there a way we can make change directly at multifield level?

 

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

3 replies

TarunKumar
Community Advisor
Community Advisor
May 29, 2024

Hi @maheshkpati ,

Going with customization or by using  ""granite/ui/components/coral/foundation/form/multifield." will give you advantage of adding multiple type of fields inside one item of multifield like you can add textfield, dropdown, RTE, etc.
Also when you say your data is being lost is mostly because you have updated the value of sling:resourceType from granite/ui/components/foundation/form/multifield" to "granite/ui/components/coral/foundation/form/multifield."
Please check your browser console for any JS error when you open existing multifield after upgrade from AEM 6.5.9 to AEM 6.5.20. 


Thanks
Tarun

Level 2
June 5, 2024

Thanks @tarunkumar  for the reply and information. With same resourceType only, previous dialogue data is not prepopulating, hence the resource type is updated and tested and the behaviour is mentioned above.

We have decided to go with the migration and make all multifield as coral3.

arunpatidar
Community Advisor
arunpatidarCommunity AdvisorAccepted solution
Community Advisor
May 29, 2024
kautuk_sahni
Community Manager
Community Manager
June 4, 2024

@maheshkpati Did you find the suggestions from users helpful? Please let us know if you require more information. Otherwise, please mark the answer as correct for posterity. If you have found out solution yourself, please share it with the community.

Kautuk Sahni