You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Jimi <ji...@mogul.com> on 2010/06/03 11:52:09 UTC
Javascript string formatting problem with DateTextField and
DatePicker
Hi,
I tried out the DateTextField together with the Datepicker component, but it
doesn't work as expected. I want it to use the format/pattern "yyyy-MM-dd",
and when the page is rendered it does show the date in that format, but the
moment I use the datepicker (even only clicking in the button do display the
datepicker calender) the date is changed to a "yy-MM-dd" pattern, and no
matter what I do it continues to use this pattern until I refresh the page.
I have tried both the wicket-datetime version and the wicket extensions
version of the DateTextField, with no difference in behaivor. I wanted to
try the wicket-datetime version of the DatePicker but apparently it doesn't
exist any more for wicket 1.4.
Things that I have tried:
---------
// import org.apache.wicket.datetime.markup.html.form.DateTextField;
// import org.apache.wicket.extensions.yui.calendar.DatePicker;
DateTextField dateTextField =
DateTextField.forDatePattern("dateTextField", new PropertyModel<Date>(this,
"exportDate"), "yyyy-MM-dd");
dateTextField.add(new DatePicker());
add(dateTextField);
---------
---------
// import org.apache.wicket.extensions.markup.html.form.DateTextField;
// import org.apache.wicket.extensions.yui.calendar.DatePicker;
//
DateTextField dateTextField = new DateTextField("dateTextField", new
PropertyModel<Date>(this, "exportDate"), "yyyy-MM-dd");
add(dateTextField);
dateTextField.add(new DatePicker());
---------
---------
// import org.apache.wicket.datetime.markup.html.form.DateTextField;
// import org.apache.wicket.extensions.yui.calendar.DatePicker;
//
DateTextField dateTextField = new DateTextField("dateTextField", new
PropertyModel<Date>(
this, "exportDate"), new StyleDateConverter("S-", true))
{
@Override
public Locale getLocale()
{
return new Locale("sv", "SE");
}
};
add(dateTextField);
dateTextField.add(new DatePicker());
---------
That last example is almost a copy paste of the example code from here:
http://wicketstuff.org/wicket/dates/
...with the difference that my locale is hard coded. The example on
wicketstuff works just fine when I select the same locale.
The html is simply a input field like this:
---------
<input type="text" wicket:id="dateTextField"/>
---------
Does anyone have any explanation to this strange behavior? What can I do to
get it to always use "yyyy-MM-dd2"? This is very hard for me to debug since
it is client side (ie javascript) behavior, not server side java behavior.
Regards
/Jimi
--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/Javascript-string-formatting-problem-with-DateTextField-and-DatePicker-tp2241433p2241433.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Javascript string formatting problem with DateTextField and
DatePicker
Posted by Jimi <ji...@mogul.com>.
Thanks Igor. I was already running 1.4.7, but I just upgraded to 1.4.9 and
that solved the problem. But strange that the bugfix wasn't mentioned on the
http://wicket.apache.org/news.html page.
Regards
/Jimi
Igor Vaynberg-2 wrote:
>
> i think this is fixed in 1.4.7+, you should upgrade
>
--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/Javascript-string-formatting-problem-with-DateTextField-and-DatePicker-tp2241433p2243120.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Javascript string formatting problem with DateTextField and
DatePicker
Posted by Igor Vaynberg <ig...@gmail.com>.
i think this is fixed in 1.4.7+, you should upgrade
-igor
On Thu, Jun 3, 2010 at 5:11 AM, Jimi <ji...@mogul.com> wrote:
>
> Ok, I managed to find the problem using the javascript debug function of
> Firebug, but I have no idea on how to solve it.
>
> The problematic code lies in the file wicket-date.js:
>
> 125 /**
> 126 * Return the result of interpolating the value (date) argument with the
> date pattern.
> 127 * The dateValue has to be an array, where year is in the first, month
> in the second
> 128 * and date (day of month) in the third slot.
> 129 */
> 130 Wicket.DateTime.substituteDate = function(datePattern, date) {
> 131 day = date[2];
> 132 month = date[1];
> 133 year = date[0];
> 134 // optionally do some padding to match the pattern
> 135 if(datePattern.match(/dd+/)) day =
> Wicket.DateTime.padDateFragment(day);
> 136 if(datePattern.match(/MM+/)) month =
> Wicket.DateTime.padDateFragment(month);
> 137 if(datePattern.match(/yy+/)) year =
> Wicket.DateTime.padDateFragment(year % 100);
> 138 // replace pattern with real values
> 139 return datePattern.replace(/d+/, day).replace(/M+/,
> month).replace(/y+/, year);
> 140 }
>
> On the line 137 it truncates the year from 2010 to 10, and simply ignores
> the fact that I want a 4 digit year.
>
> When I did the same debugging on the example on wicketstuff.org I found that
> this javascript function looked a little bit different:
>
> 80 Wicket.DateTime.substituteDate = function(datePattern, date) {
> 71 day = date[2];
> 72 month = date[1];
> 73 year = date[0];
> 74 if(datePattern.match(/dd+/)) day = Wicket.DateTime.padDateFragment(day);
> 75 if(datePattern.match(/MM+/)) month =
> Wicket.DateTime.padDateFragment(month);
> 76 if(datePattern.match(/byy+/)) year =
> Wicket.DateTime.padDateFragment(year % 100);
> 77 return datePattern.replace(/d+/, day).replace(/M+/, month).replace(/y+/,
> year);
> 78 }
>
> Here on line 76 it sees if the datePattern matches "byy+", I have no idea
> what that 'b' i supposed to mean, but the result is that it doesn't truncate
> the year from 4 to 2 digits.
>
> I also noted that these two *different* wicket-date.js files contain the
> exact same versioning information:
>
> YAHOO.register("wicket-date", Wicket.DateTime, {version: "1.3.0", build:
> "rc1"});
>
> So, does anyone know what I can do to get the correct wicket-date.js? Or
> should I report this as a bug somewhere? The way I see it, the javascript
> should check if the datepattern matches "yyyy" and then leave the year as it
> is.
>
> /Jimi
> --
> View this message in context: http://apache-wicket.1842946.n4.nabble.com/Javascript-string-formatting-problem-with-DateTextField-and-DatePicker-tp2241433p2241559.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Javascript string formatting problem with DateTextField and
DatePicker
Posted by Jimi <ji...@mogul.com>.
Ok, I managed to find the problem using the javascript debug function of
Firebug, but I have no idea on how to solve it.
The problematic code lies in the file wicket-date.js:
125 /**
126 * Return the result of interpolating the value (date) argument with the
date pattern.
127 * The dateValue has to be an array, where year is in the first, month
in the second
128 * and date (day of month) in the third slot.
129 */
130 Wicket.DateTime.substituteDate = function(datePattern, date) {
131 day = date[2];
132 month = date[1];
133 year = date[0];
134 // optionally do some padding to match the pattern
135 if(datePattern.match(/dd+/)) day =
Wicket.DateTime.padDateFragment(day);
136 if(datePattern.match(/MM+/)) month =
Wicket.DateTime.padDateFragment(month);
137 if(datePattern.match(/yy+/)) year =
Wicket.DateTime.padDateFragment(year % 100);
138 // replace pattern with real values
139 return datePattern.replace(/d+/, day).replace(/M+/,
month).replace(/y+/, year);
140 }
On the line 137 it truncates the year from 2010 to 10, and simply ignores
the fact that I want a 4 digit year.
When I did the same debugging on the example on wicketstuff.org I found that
this javascript function looked a little bit different:
80 Wicket.DateTime.substituteDate = function(datePattern, date) {
71 day = date[2];
72 month = date[1];
73 year = date[0];
74 if(datePattern.match(/dd+/)) day = Wicket.DateTime.padDateFragment(day);
75 if(datePattern.match(/MM+/)) month =
Wicket.DateTime.padDateFragment(month);
76 if(datePattern.match(/byy+/)) year =
Wicket.DateTime.padDateFragment(year % 100);
77 return datePattern.replace(/d+/, day).replace(/M+/, month).replace(/y+/,
year);
78 }
Here on line 76 it sees if the datePattern matches "byy+", I have no idea
what that 'b' i supposed to mean, but the result is that it doesn't truncate
the year from 4 to 2 digits.
I also noted that these two *different* wicket-date.js files contain the
exact same versioning information:
YAHOO.register("wicket-date", Wicket.DateTime, {version: "1.3.0", build:
"rc1"});
So, does anyone know what I can do to get the correct wicket-date.js? Or
should I report this as a bug somewhere? The way I see it, the javascript
should check if the datepattern matches "yyyy" and then leave the year as it
is.
/Jimi
--
View this message in context: http://apache-wicket.1842946.n4.nabble.com/Javascript-string-formatting-problem-with-DateTextField-and-DatePicker-tp2241433p2241559.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org