The LocalDateSerializer uses too strict a parser (i.e. DateTimeFormatter) for my purposes. It uses ISODateTimeFormat.date(), which expects a date like yyyy-MM-dd. However, what I often get in JSON requests from the client side is something of the form yyyy-MM-dd'T'hh:mm:ssZ (because it's a JavaScript client and the JavaScript Date object always seems to include the time portion). So what I want is a formatter/parser that optionally allows the 'T'hh:mm:ssZ part.
Here is the formatter I am using to achieve this:
new DateTimeFormatterBuilder()
.append(ISODateTimeFormat.date())
.appendOptional(ISODateTimeFormat.tTime().getParser())
.toFormatter();
And because I can't change the parser in the LocalDateSerializer I had to roll my own deserializer that I register with the ObjectFactory.