Wicket6 で AbstractValidator が Deprecated になっている!
さらに、将来、Wicket 7 では、完全になくなってしまうというのは、結構辛い。
org.apache.wicket.validation.IValidator を使いなさいということなのだが、
実装してバリデーション結果でエラーの時、error(Serializable message) を実行するようにしたとして、
IValidator 実装をどのように、Behavior :ふるまわせるようにすれば、良いのだろう??
extends Behavior implements IValidator<T>
このように Behavior を継承して、IValidator を実装して
org.apache.wicket.validation.IValidatable の
バリデーション結果でエラーの時、
error メソッドで ValidationError を渡すようにする。
例) Date型ではなくて、文字列として Field コンポーネントを使ったときのバリデータを用意する。
import java.text.SimpleDateFormat;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.validation.IValidatable;
import org.apache.wicket.validation.IValidator;
import org.apache.wicket.validation.ValidationError;
/**
* DatePickerCheckBehavior
*/
public class DatePickerValidator extends Behavior implements IValidator<String>{
private SimpleDateFormat sfymd;
public DatePickerValidator(String dateformat){
sfymd = new SimpleDateFormat(dateformat);
}
@Override
public void validate(IValidatable<String> validatable){
try{
sfymd.parse(validatable.getValue());
}catch(Exception e){
validatable.error(new ValidationError("Date Error"));
}
}
}