8
Spring MVC(@Validate)でバッキングオブジェクトとアノテーションを持つバリデータを使用しました。それはうまくいった。Spring MVCのコンテキスト外でSpring Validatorを使用する
今私は自分自身のバリデーションを実装することでSpringマニュアルの動作を正確に理解しようとしています。バリデーターを "使用する"方法についてはわかりません。
マイバリ:
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がないため無効です。
これは魅力的でした!私は、ドキュメントが検証の概念が最初に現れるときに、その動作が正しいことを示すことを望みます。 – Harry
2番目の引数Shape.class.getName()が必要な理由を教えてください。 –