Highlighted

Granite datepicker's valueFormat property throws errors/does not work

Avatar

Avatar

jocamp

Avatar

jocamp

jocamp

10-01-2019

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 -

1664755_pastedImage_2.png

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

Replies

Highlighted

Avatar

Avatar

Gaurav-Behl

MVP

Total Posts

1.1K

Likes

226

Correct Answer

281

Avatar

Gaurav-Behl

MVP

Total Posts

1.1K

Likes

226

Correct Answer

281
Gaurav-Behl
MVP

14-01-2019

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"/>

Highlighted

Avatar

Avatar

smacdonald2008

Total Posts

12.7K

Likes

1.4K

Correct Answer

2.3K

Avatar

smacdonald2008

Total Posts

12.7K

Likes

1.4K

Correct Answer

2.3K
smacdonald2008

14-01-2019

This works for me

date1.png

Result --

date2.png

Highlighted

Avatar

Avatar

NegiCF

Avatar

NegiCF

NegiCF

14-01-2019

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