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
なお、この現象が発生している環境は、
です。