DatetimeField验证器

Imt*_*rza 1 java validation wicket

我已经创建了一个自定义验证器来验证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;
}

}
Run Code Online (Sandbox Code Playgroud)

这就是我添加验证器的方式.

startDateTimeField.add(new DateTimeFieldValidator());
Run Code Online (Sandbox Code Playgroud)

jor*_*deu 6

您的DateTimeFieldValidator必须实现IValidator<Date>而不是IValidator<DateTimeField>