Hello,
I'm using AEM 6.3 and currently working on a dialog with a datepicker field. I'm trying to use the "valueFormat" property so that I can save the date value in something other than the standard UTC format but it doesn't appear to work correctly. Setting it to "M/D/YY" results in this error message in the log and nothing is saved -
org.apache.sling.servlets.post.impl.operations.ModifyOperation Exception during response processing.
javax.jcr.ValueFormatException: Invalid date 1/1/19
at org.apache.jackrabbit.oak.plugins.value.ValueFactoryImpl.createValue(ValueFactoryImpl.java:239)
at org.apache.jackrabbit.oak.jcr.session.NodeImpl.setProperty(NodeImpl.java:449)
at org.apache.sling.servlets.post.impl.helper.SlingPropertyValueHandler.store(SlingPropertyValueHandler.java:594)
at org.apache.sling.servlets.post.impl.helper.SlingPropertyValueHandler.setPropertyAsIs(SlingPropertyValueHandler.java:305)
at org.apache.sling.servlets.post.impl.helper.SlingPropertyValueHandler.setProperty(SlingPropertyValueHandler.java:158)
I assume this is happening because it's trying to save that format in a Date property node which expects standard UTC. To get around this i thought i'd try forcing the datepicker to save as a String using @TypeHint. This does allow it to work as expected, but when I re-open the dialog later the error log throws that same error (despite the field populating correctly in the dialog).
Is there any way to get around this error? Has anyone had success using valueFormat?
Thanks
Views
Replies
Total Likes
Not sure about 6.3 but the below code works fine in 6.4 without any errors
<startDate-string
about="This causes startDate to be saved as a String in JCR instead of Date"
jcr:primaryType="nt:unstructured"
sling:resourceType="/libs/granite/ui/components/coral/foundation/form/hidden"
name="./startDate@TypeHint"
value="String"/>
<start-date
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/datepicker"
fieldLabel="Start Date"
name="./startDate"
required="{Boolean}true"
valueFormat="M/D/YY"/>
This works for me
Result --
Views
Replies
Total Likes
I tried it using the @TypeHint and it works fine with aem 6.3 as well.
<date-string
jcr:primaryType="nt:unstructured"
sling:resourceType="/libs/granite/ui/components/coral/foundation/form/hidden"
value="String"
name="./date@TypeHint"/>
<date
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/datepicker"
fieldLabel="Date"
name="./date"
valueFormat="DD/MM/YYYY"/>
Make sure you are using /libs/granite/ui/components/coral/foundation/form/hidden for @TypeHint
Hi @jocamp Are u able to resolve this issue? I am facing the same issue lately.
Views
Replies
Total Likes
I can't recall exactly, but here is what we're using today and it is working. I think the key might have been adding "displayedFormat" as well as adding a typehint.
<startdateHint jcr:primaryType="nt:unstructured" sling:resourceType="granite/ui/components/coral/foundation/form/hidden" name="./startdate@TypeHint" value="String"/> <startdate jcr:primaryType="nt:unstructured" sling:resourceType="granite/ui/components/coral/foundation/form/datepicker" displayedFormat="M/D/YY" fieldLabel="Start Date" name="./startdate" required= "{Boolean}true" valueFormat="M/D/YY"/>
Views
Replies
Total Likes