Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: Release 1.4.3
-
Fix Version/s: Release 1.5
-
Component/s: Validation
-
Labels:None
-
Environment:Solaris 11
Description
I was trying to get Stripes to accept dd/MM/YYYY format dates, so I extended DateTypeConverter as follows:
protected String[] getFormatStrings() { String[] o = super.getFormatStrings(); String[] n = new String[o.length + 1]; n[0] = "dd/MM/yyyy"; System.arraycopy(o, 0, n, 1, o.length); return n; }
And in my Action class I had:
@Validate(converter=my.project.MyDateTypeConverter.class)
private Date startDate;
And it didn't work - it rejected perfectly valid dates such as "31/12/2007". The reason is that DateFormat replaces characters such as "/" in the input string with spaces, but it doesn't do the same to the format strings, so it ends up trying to match "31 12 2007" against "dd/MM/yyyy", which fails.
I'm not sure if this is a documentation bug (i.e. the docs should point out that custom format strings shouldn't include non-space characters), or a code bug (i.e. format strings should be subject to the same replacements as the input string), but it surely is a bug.
Please refer to <a href="http://stripes.mc4j.org/jira/browse/STS-445">
STS-445</a> which hopefully gives an easy way to resolve this issue.STS-445</a> which hopefully gives an easy way to resolve this issue.