読者です 読者をやめる 読者になる 読者になる

WicketのDateTextField、DatePickerでハマってます

Wicket 1.3 から Wicket 1.4 へマイグレートした後に、仕様変更なのかバグなのか、動作が異なって困る点がいくつかありました。
表題のもその一つで、en(en-US)ロケールでDateTextFieldとDatePickerを使うと、挙動がおかしいというものです。

Foo.html

(略)
<span wicket:id="feedBack"></span>
<form wicket:id="form">
	<input type="text" wicket:id="date" />
	<input type="submit" />
</form>
(略)

Foo.java

import org.apache.wicket.datetime.markup.html.form.DateTextField;
(略)
public class Foo extends WebPage {
	public Foo() {
		Form<Void> form = new Form<Void>("form") {
			@Override
			protected void onSubmit() {
				super.onSubmit();
			}
		};
		DateTextField date = new DateTextField("date", new Model<Date>(new Date()), new StyleDateConverter("M-", true));
		this.add(new FeedbackPanel("feedBack"));
		this.add(form);
		form.add(date);
		date.add(new DatePicker());
	}
}

というソースコードがあったとして、これを実行すると、

といった画面がでます。DatePickerのアイコンで日付を選択すると、

ここまではよし。Wicket素敵。


さて、同じFooクラスを、ロケールをen(en_US)に変更したブラウザで閲覧すると、

と、表記を勝手に MMM dd, yyyy のフォーマットにしてくれて嬉しい。


しかし、ここでDatePickerのアイコンで日付を選択すると、

あれ。MMM dd, yyyy のフォーマットになってない。


ついでにこの状態でonSubmitを実行すると、

このように、バリデータにかかります。


wicket-extentionsの方のDateTextFieldを使って、ロケールにかかわらず yyyy/MM/dd というフォーマットになるようにすれば回避できるんですが、折角StyleDateConverterがあるのに勿体ない orz

なお、この現象が発生している環境は、

です。