myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yee-Wah Lee (JIRA)" <>
Subject [jira] Commented: (TRINIDAD-61) tr:validateDateTimeRange validation fails on last day of valid range
Date Tue, 14 Aug 2007 22:59:30 GMT


Yee-Wah Lee commented on TRINIDAD-61:

I can repro the issue (without Facelets, convertDateTime or InputDate), using the online demo:

    <tr:inputText value="#{}">
       <tr:validateDateTimeRange minimum="2007-01-01"

 1. Look for the input with "examples of values that will fail validation: any  date which
is not in 2007".
 2. Enter 12/31/2007 and press Submit.
 3. The client validator returns error "Enter a date on or between 12/31/2006
 and 12/30/2007." 

I believe the problem is the following code in DateFormat.js
TrDateTimeConverter.prototype._simpleDateParseImpl = function(..)
   var parsedTime = new Date(0);

-   new Date(0) corresponds to the Date (milliseconds) constructor,  returning a date with
0 milliseconds since 1 January 1970 00:00:00 UTC, which is converted with timezone offset
locally. E.g. in my timezone the Date is Dec 31 1969 16:00:00 PDT 
-  The code then goes to parse the submittedValue for MM/DD/YYYY  and sets those on parsedTime.
So, calling setFullYear(),setMonth(),setDate() gives parsedTime a value of Dec 31 2007 16:00:00
- As you notice, the hours, minutes, seconds components are still present. This value is then
used in comparison against the maxValue from the server which was generated using 0 as default
values for the hh:mm:ss, i.e. Dec 31 2007 00:00:00 PDT. 

> tr:validateDateTimeRange validation fails on last day of valid range
> --------------------------------------------------------------------
>                 Key: TRINIDAD-61
>                 URL:
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>          Components: Components
>            Reporter: Thorsten Guenther
>         Attachments: screenshot-1.jpg
> When used without an given converter (tr:convertDateTime), a tr:validateDateTimeRange's
javaScript-validation fails (when used with facelets? not tested.) if the last day of the
valid date-range was choosen in the tr:inputDate. (see screenshot). Debugging the javaScript
shows that the select date was converted into for example "20.09.2007 01:00:00" (depending
on timeZone) and is checked against "20.09.2007 00:00:00". So the choosen date is bigger then
the max date and the validation fails.
> Using a ValueBinding and setting the maxdate to "20.09.2007 23:59:59" does not solve
the problem since the time component seems to be cut of from maxDate for javaScript validation.
> A <tr:convertDateTime pattern="dd.MM.yyyy"/> is a workaround.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message