Another JSTL Gotcha.
JSTL‘s format date tag uses browser-based content negotiation to determine the locale of a site viewer so it can format the date correctly for that user’s language settings.
The only problem is that if you have specified a pattern to use to override the date format it ignores that in the face of the browsers’ language settings.
This could be a bug, the spec is not clear either way though.
I use that tag and a fixed pattern to build links in my blog archive. They work fine for me, but when a bot (that doesn’t specify a language) comes along the links get rewritten in a different format and the links break.
Took me a while to work out how that was all happening.
Anyway, the fix is to hard-code a language setting in the JSP as follows:
<fmt:setLocale value='en-gb'/>
What a palava!