Я использовал валидаторы с объектами поддержки и аннотациями в Spring MVC (@Validate).Это сработало хорошо.
Теперь я пытаюсь точно понять, как это работает с руководством Spring, внедрив мой собственный Validate.Я не уверен, как «использовать» мой валидатор.
Мой валидатор:
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import com.myartifact.geometry.Shape;
public class ShapeValidator implements Validator {
@SuppressWarnings("rawtypes")
public boolean supports(Class clazz) {
return Shape.class.equals(clazz);
}
public void validate(Object target, Errors errors) {
ValidationUtils.rejectIfEmpty(errors, "x", "x.empty");
ValidationUtils.rejectIfEmpty(errors, "y", "y.empty");
Shape shape = (Shape) target;
if (shape.getX() < 0) {
errors.rejectValue("x", "negativevalue");
} else if (shape.getY() < 0) {
errors.rejectValue("y", "negativevalue");
}
}
}
Класс Shape, который я пытаюсь проверить:
public class Shape {
protected int x, y;
public Shape(int x, int y) {
this.x = x;
this.y = y;
}
public Shape() {}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
Основной метод:
public class ShapeTest {
public static void main(String[] args) {
ShapeValidator sv = new ShapeValidator();
Shape shape = new Shape();
//How do I create an errors object?
sv.validate(shape, errors);
}
}
С ошибкамиэто просто интерфейс, я не могу создать его экземпляр, как обычный класс.Как я на самом деле «использую» свой валидатор, чтобы подтвердить, что моя форма действительна или недействительна?
На примечании стороны, эта форма должна быть недействительной, так как в ней отсутствуют x и y.