Expand my Community achievements bar.

Guidelines for the Responsible Use of Generative AI in the Experience Cloud Community.

Unable to update field in content fragment

Avatar

Level 3

Hi,

I have a requirement to create and update a value in content fragment. I am able to create the content fragment but when i am trying to save the field it is not happening.

        try {            
            Map<String,Object> param = new HashMap<>();
            param.put(ResourceResolverFactory.SUBSERVICE,CF_SERVICE_USER);
            resourceResolver = resolverFactory.getServiceResourceResolver(param);
            Resource templateResource = resourceResolver.getResource("model-path");
            Resource parentResource = resourceResolver.getResource("folder-path");
            FragmentTemplate template = templateResource.adaptTo(FragmentTemplate.class);
            ContentFragment newFragment = template.createFragment(parentResource, "TestCF", "Content Fragment New field test");
            Resource newFragmentRsc=resourceResolver.getResource("/content/dam/cf/TestCF");
            newFragmentRsc.adaptTo(ValueMap.class).put("dateField","2024-10-13T13:48:00.000+05:30");           
            resourceResolver.commit();
        }  
        return "CF Created";
    }
2 Replies

Avatar

Adobe Champion

in your example you are creating the fragment, then loading the root resource which was created and setting values on this - CF's have a much more complex internal structure as the data is not stored directly on the root resource:

 

Screenshot 2024-10-15 at 10.15.41.png

 

You are getting a ContentFragment object back from the createFragment call, so should be able to use the java API to get the relevant element (getElement method) then set the value on it, eg:

 

contentFragment newFragment = template.createFragment(parentResource, "TestCF", "Content Fragment New field test");
ContentElement dateElement = newFragment.getElement("dateField");
dateElement.setContent("2024-10-13T13:48:00.000+05:30",dateElement.getContentType());
resourceResolver.commit();

 

Javadocs for the interfaces:

https://developer.adobe.com/experience-manager/reference-materials/6-5/javadoc/com/adobe/cq/dam/cfm/...

https://developer.adobe.com/experience-manager/reference-materials/6-5/javadoc/com/adobe/cq/dam/cfm/...

 

Avatar

Level 3

Hi @martin_ecx_io 

 

I already tried this method but the value is stored as below:

nivethaS_0-1728989225175.png

I was unable to update the datefield still