dateTimefield を検証するカスタム バリデータを作成しました。私の問題は、datetimefield 変数に追加できないことです
タイプのメソッド add(
IValidator<? super Date>
) はFormComponent<Date>
、引数 (DateTimeFieldValidator) には適用されません
これは私が得ているエラーです。
DateTimeField を検証する標準的な方法はありますか?
package validators;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import org.apache.wicket.extensions.yui.calendar.DateTimeField;
import org.apache.wicket.validation.IValidatable;
import org.apache.wicket.validation.IValidator;
import org.apache.wicket.validation.ValidationError;
public class DateTimeFieldValidator implements IValidator<DateTimeField> {
/**
*
*/
private static final long serialVersionUID = 2342344609244L;
public DateTimeFieldValidator() {
}
private void error(IValidatable<DateTimeField> validatable, String errorKey) {
ValidationError error = new ValidationError();
error.addMessageKey(getClass().getSimpleName() + "." + errorKey);
validatable.error(error);
}
public void validate(IValidatable<DateTimeField> validatable) {
DateTimeField dateTime = (DateTimeField) validatable.getValue();
if ( dateTime== null){
error(validatable, "invalid.datetime");
}
else{
if( dateTime.getHours()!=null){
if( dateTime.getHours()>12 || dateTime.getHours()<0){
error(validatable, "invalid.hour");
}
}
else{
error(validatable, "invalid.hour");
}
if(dateTime.getMinutes()!=null){
if( dateTime.getMinutes() > 60 ){
error(validatable, "invalid.hour");
}
}else {
error(validatable, "invalid.minutes");
}
if( dateTime.getDate() == null ){
error(validatable, "invalid.date");
}
}
}
boolean isLegalDate(String s) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
return sdf.parse(s, new ParsePosition(0)) != null;
}
}
これがバリデータを追加する方法です。
startDateTimeField.add(new DateTimeFieldValidator());