在SpringMVC上下文之外使用SpringValidator

在SpringMVC上下文之外使用SpringValidator,spring,validation,Spring,Validation,我在SpringMVC(@Validate)中使用了带有支持对象和注释的验证器。它工作得很好 现在,通过实现我自己的验证,我试图准确地理解它是如何与Spring手册一起工作的。我不知道如何“使用”我的验证器 我的验证器: import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.

我在SpringMVC(@Validate)中使用了带有支持对象和注释的验证器。它工作得很好

现在,通过实现我自己的验证,我试图准确地理解它是如何与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");
    }
}
}
主要方法:

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

为什么不使用spring提供的实现
org.springframework.validation.MapBindingResult

你可以做:

Map<String, String> map = new HashMap<String, String>();
MapBindingResult errors = new MapBindingResult(map, Shape.class.getName());

ShapeValidator sv = new ShapeValidator();
Shape shape = new Shape();
sv.validate(shape, errors);

System.out.println(errors);
Map Map=newhashmap();
MapBindingResult errors=新的MapBindingResult(map,Shape.class.getName());
ShapeValidator sv=新的ShapeValidator();
形状=新形状();
sv.验证(形状、误差);
系统输出打印项次(错误);
这将打印出错误消息中的所有内容


祝你好运

这真是个奇迹!我只是希望文档能够展示验证概念首次出现时,它是如何正确工作的……您能告诉我们为什么需要第二个参数Shape.class.getName()?
Map<String, String> map = new HashMap<String, String>();
MapBindingResult errors = new MapBindingResult(map, Shape.class.getName());

ShapeValidator sv = new ShapeValidator();
Shape shape = new Shape();
sv.validate(shape, errors);

System.out.println(errors);