Wicket の DateTextField は、日付入力で任意書式を検証してくれる。
org.apache.wicket.extensions.markup.html.form.DateTextField
これは、wicket-extension-1.4.9.jar に含まれている。
以下のようにコンストラクタを使用すれば、
new DateTextField("dateField",new Model<Date>(),"yyyy/MM/dd");
書式は、"yyyy/MM/dd" で検証されて、この入力されたコンポーネントオブジェクトは、
IModel インターフェースの、getModelObject() メソッドで Date 型で取得できる。
必須入力にする場合は、上記コンストラクタで生成したインスタンスの
setRequired(true) を実行すればよい。
DateTextField は、wicket-datetime-1.4.9.jar で配布されてる
org.apache.wicket.extensions.yui.calendar.DatePicker
を使用するとカレンダーアイコン+クリックの画面入力ができるようになる。
書式 を DateTextFieldコンストラクタ引数3番目で指定した "yyyy/MM/dd" に
反する入力をすると、、、
HTML に書くもの、、、(途中省略)
<form wicket:id="myform">
<input wicket:id="dateField" type="text"/>
<button wicket:id="submit" type="submit">送信</button>
WebPageクラスコンストラクタで書くもの、、、
Form<Void> form = new Form<Void>("myform");
final DateTextField dateField = new DateTextField("dateField",new Model<Date>(),"yyyy/MM/dd");
dateField.setRequired(true);
dateField.add(new DatePicker());
form.add(dateField);
// フォーム入力の受け取り
Button submitButton = new Button("submit"){
@Override
public void onSubmit(){
Date dt = dateField.getModelObject();
}
}
form.add(submitButton);
WebPage のproperties ファイルに書くもの、、、
myform.dateField = 日付
myform.dateField.Required = ${label} は、必須入力です!
myform.dateField.IConverter.Date=日付入力 '${input}' 書式が正しくありません