convertDateTime handles type="date" incorrectly
-----------------------------------------------
Key: TRINIDAD-1550
URL: https://issues.apache.org/jira/browse/TRINIDAD-1550
Project: MyFaces Trinidad
Issue Type: Bug
Components: Components
Affects Versions: 1.2.10-core
Environment: Linux 64-bit, Java 1.5.0_11
Reporter: Eric Price
Priority: Minor
I have a backing bean that contains two HtmlInputText components. One stores
the "date" part of a Date, the other stores the "time" part of a Date. When the
user enters the information, the "date" and "time" are combined to form the
actual Date.
The bean has the following declarations:
public class DateTestBean {
private HtmlInputText dateInput = null;
private HtmlInputText timeInput = null;
private Date date = null;
private Date time = null;
public DateTestBean() {
dateInput = new HtmlInputText();
timeInput = new HtmlInputText();
date = Calendar.getInstance( TimeZone.getTimeZone( "GMT" ) );
time = (Date)date.clone();
}
}
For my sample program, I have a button on the jsp that calls the action method
setDateAction() to update the date/time values with current values. That method
is shown below:
public String setDateAction() {
Calendar dateCal = Calendar.getInstance( TimeZone.getTimeZone( "GMT" ) );
Calendar timeCal = (Calendar)dateCal.clone();
dateInput.setValue( dateCal.getTime() );
timeInput.setValue( timeCal.getTime() );
date = dateCal.getTime();
time = timeCal.getTime();
return "success";
}
There is a corresponding action method associated with a submit button on the
jsp that prints the date/time values when the page is submitted.
public String displayDateAction() {
Object valObj = this.dateInput.getValue();
if (valObj instanceof Date) {
System.out.println(" date=" + formatDate( (Date)valObj ) );
}
valObj = this.timeInput.getValue();
if (valObj instanceof Date) {
System.out.println( " time=" + formatDate( (Date)valObj ) );
}
}
Here is the code snipit from the jsp:
<t:panelGrid columns="2">
<t:inputText binding="#{dateTestBean.dateInput}" size="10" maxlength="10"
immediate="true" value="#{dateTestBean.date}" title="yyyy-MM-dd"
id="dateInput">
<f:convertDateTime type="date" pattern="yyyy-MM-dd"/>
</t:inputText>
<t:inputText binding="#{dateTestBean.timeInput}" size="8" maxlength="8"
immediate="true" value="#{dateTestBean.time}" title="HH:mm:ss"
id="timeUpStartTimeInput">
<f:convertDateTime type="time" pattern="HH:mm:ss"/>
</t:inputText>
</t:panelGrid>
<t:panelGrid columns="2">
<t:commandButton value="Set Date" action="#{dateTestBean.setDateAction}"/>
<t:commandButton value="Show Date"
action="#{dateTestBean.displayDateAction}"/>
</t:panelGrid>
When I submit the page, I see different values for the date and time depending
on whether or not I'm using the trinidad rendering kit.
When the page loads the date and time fields are set to the correct "date" and
"time" values. When the page is submitted, I see the following:
Under MyFaces 1.1.4 (or JSF 1.1), Java 1.5, tomahawk 1.1.3 and assuming the
date was 12:20:32 on Aug 4th 2009, I get:
date = '2009-08-04 00:00:00'
time= '1970-01-01 12:20:32'
Similarly, under MyFaces 1.2.6 (or JSF 1.2), Java 1.5, tomahawk 12-1.1.8 and
assuming the date was 12:20:32 on Aug 4th 2009, I get:
date = '2009-08-04 00:00:00'
time= '1970-01-01 12:20:32'
So if I combine the two values when the page is submitted, I end up with
'2009-08-04 12:20:32', which is the correct submit date/time.
Under MyFaces 1.2.6 (or JSF 1.2), Java 1.5, trinidad-1.2.10, and assuming the
same date/time values are set, I get:
date= '2009-08-04 12:20:32'
time= '1970-01-01 12:20:32'
So the convertDateTime with type="date" is not zero-ing out the time field
values, but the one with type="time" is zero-ing out the date field values.
I've done a lot of testing and originally thought the problem with with myFaces
1.2. But I eventually discovered that the problem occurs if I include the
following in the faces-confg.xml regardless of whether or not I have any
trinidad components in the page:
<default-render-kit-id>
org.apache.myfaces.trinidad.core
</default-render-kit-id>
This inclusion in the faces-config.xml also requires me to include the
trinidad-1.2.10 libraries in my web app.
Including these two items leads to the errant behavior of the convertDateTime
with type="date" not zero-ing out the time fields of the date.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.