]
Norman Richards reassigned JBSEAM-4413:
---------------------------------------
Assignee: Norman Richards
Date format error in .page.xml params when having custom date
pattern
---------------------------------------------------------------------
Key: JBSEAM-4413
URL:
https://jira.jboss.org/jira/browse/JBSEAM-4413
Project: Seam
Issue Type: Bug
Affects Versions: 2.1.2.GA
Environment: Seam 2.1.2.GA, DB2
http://fisheye.jboss.org/browse/Seam/branches/community/Seam_2_1/src/main...
Reporter: Julien Kronegg
Assignee: Norman Richards
Priority: Minor
Fix For: 2.2.1.CR1
Original Estimate: 1 day
Remaining Estimate: 1 day
The java.util.Date passed by <param> tags in the .page.xml file are converted from
Date to String for the GET request, using the date format defined in the last used
rich:calendar. Then, the GET parameters are converted back from String to Date using the
default date format which may not be the same as the one defined in the rich:calendar.
This results in date conversion errors such as "value must be a date, eg.
10/13/2008".
The issue is fully described with an example in
http://seamframework.org/Community/DateFormatErrorInPagexmlParamsASeamIssue
To correct this issue, the org.jboss.seam.navigation.Param should use its own date
converter instead of sharing the converter with other JSF components (in other words, the
Param class should use a technical date converter). This requires the following steps:
1) define a org.jboss.seam.faces.DateParamConverter date converter with a selectable
date format defaulted to "yyyyMMddHHmmssSSS"
2) change the org.jboss.seam.navigation.Param class to use a the DateParamConverter
converter if the param value is java.util.Date, else, use the converters registered in
JSF. This is done by changing:
Class<?> type = valueExpression.getType();
if (type==null)
{
return null;
}
return FacesContext.getCurrentInstance().getApplication().createConverter(type);
by
Class<?> type = valueExpression.getType();
if (type==null)
{
return null;
}
+ if (type.equals(Date.class)) {
+ return org.jboss.seam.faces.DateParamConverter.getInstance(); // return an instance
of the technical converter, to be created
+ } else {
return FacesContext.getCurrentInstance().getApplication().createConverter(type);
+ }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: