He utilizado validadores con objetos de respaldo y anotaciones en Spring MVC (@Validate). Funcionó bienUso de Spring Validator fuera del contexto de Spring MVC
Ahora trato de entender exactamente cómo funciona el manual de Spring implementando mi propio Validate. No estoy seguro de cómo "usar" mi validador.
Mi Validador:
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");
}
}
}
La clase Shape es que busque para validar:
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;
}
}
método principal:
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);
}
}
ya que los errores es sólo una interfaz, que puede' Realmente lo instancia como una clase ordinaria. ¿Cómo "uso" mi validador para confirmar que mi forma es válida o inválida?
En una nota lateral, esta forma debería ser inválido ya que carece de una x y una y.
Esto funcionó como un encanto! Solo desearía que la documentación muestre cómo funciona eso cuando aparece por primera vez el concepto de validaciones ... – Harry
¿Puede decirnos por qué necesitamos el segundo argumento, Shape.class.getName()? –