[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-4413) Date format error in .page.xml params when having custom date pattern

Julien Kronegg (JIRA) jira-events at lists.jboss.org
Tue Sep 15 05:09:23 EDT 2009


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/org/jboss/seam/navigation/Param.java?r=10375
            Reporter: Julien Kronegg
            Priority: Minor


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: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the seam-issues mailing list