Matthias,
Should "Fixed Version" be 1.1.4?
Paul Spencer
Matthias Weßendorf (JIRA) wrote:
[ http://issues.apache.org/jira/browse/MYFACES-1317?page=all ]
Matthias Weßendorf closed MYFACES-1317:
---------------------------------------
Fix Version: 1.1.3
Resolution: Fixed
fixed in nbuild.
Thanks Paul!
ClassCastException when setting timeZone attribute in <f:convertDataTime> using
EL
----------------------------------------------------------------------------------
Key: MYFACES-1317
URL: http://issues.apache.org/jira/browse/MYFACES-1317
Project: MyFaces Core
Type: Bug
Versions: 1.1.3
Reporter: Paul Spencer
Assignee: Matthias Weßendorf
Fix For: 1.1.3
I am setting the time zone attribute for the tag <f:convertDataTime> from a
backing bean. This causes the following
ClassCastException in core 1.1.3
Caused by: java.lang.ClassCastException
at
org.apache.myfaces.shared_impl.taglib.core.ConvertDateTimeTagBase.setConverterTimeZone(ConvertDateTimeTagBase.java:165)
at
org.apache.myfaces.shared_impl.taglib.core.ConvertDateTimeTagBase.createConverter(ConvertDateTimeTagBase.java:85)
at javax.faces.webapp.ConverterTag.doStartTag(ConverterTag.java:63)
If I hard code the time zone in the attribute, i.e. timeZone="GMT-05:00", no exception is thrown.
When I changed my method getTimeZone() to return a TimeZone, things worked as expected.
I guess my confusion comes from the TLD Documentation,
http://myfaces.apache.org/impl/tlddoc/index.html.
"When this value is a value-binding to a TimeZone instance, that timezone is
used. Otherwise
this value is treated as a String containing a timezone id, ie as the ID
parameter of method
java.util.TimeZone.getTimeZone(String)."
I read this to mean that the converter would converter would treat String
value-binding the same way
as a String value. Below is a coded version of my expectation.
if (UIComponentTag.isValueReference(value))
{
ValueBinding vb = facesContext.getApplication().createValueBinding(value);
TimeZone timeZone;
Object value = vb.getValue(facesContext);
if (value instanceof TimeZone)
{
timeZone = (TimeZone) value;
}
else
{
timeZone = TimeZone.getTimeZone(value.toString())
}
converter.setTimeZone(timeZone);
}
From Matthias Wessendorf:
Paul-
good catch. You are right. RI TLD Doc says the same.
Create a bug for MyFaces Core Jira project and asign the ticket please to me !
(matzew)
Thanks,
Matthias