java - Spring Validation - 以编程方式绑定(bind)到 validator

标签 java validation spring-mvc jackson

我正在尝试使用 Spring 验证来验证由 Jackson 转换器填充的模型。 所以我有一个java类,

class MyClass(){
    private String myString;
}

这个类由 Jackson 填充,我的 Java 代码中有这个实例。 还定义了一个 validator 类,例如,

class MyValidator implements Validator {
    public boolean supports(Class<?> clazz) {
        return MyClass.class.equals(clazz);
    }   
    public void validate(Object object, Errors errors) {
           //Validation logic here
    }
}

现在我想做的是将对象发送到 validator 并获取错误对象,检查并进一步处理。但是,为了调用

validate(Object object,Errors errors) 

我需要一个我没有的错误实例。我不能使用 BindingResultErrors。请告知如何进一步进行。

最佳答案

您可以使用 DataBinder 在代码中手动执行此操作:

MyClass toValidate = new MyClass();
DataBinder binder = new DataBinder(toValidate);
binder.setValidator(new MyValidator());
binder.validate();
if (binder.getBindingResult().hasErrors()) {
    // oh noes!
}

虽然如果你在 spring-mvc 的@Controller 中定义了一个@ModelAttribute,像这样的东西应该可以工作(放在相关的@Controller 中):

@ModelAttribute("myclass")
public MyClass myClass() {
    return new MyClass();
}

@InitBinder("myclass")
protected void initBinder(WebDataBinder binder) {
    binder.setValidator(new MyValidator());
}

@RequestMapping(value = "/do/something", method = POST)
public ModelAndView validatedRequest(@Valid @ModelAttribute("myclass") MyClass profile,
                                     BindingResult result) {
    if (result.hasErrors()) {
        // oh noes!
    }
}

关于java - Spring Validation - 以编程方式绑定(bind)到 validator ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211194/

相关文章:

java - Java 中的位操作和输出

java - 使用数据库的条形图不显示

node.js - Nodejs 类验证器验证对象数组

整个表单的 WPF 验证

java - 陷入 Spring MVC 新手教程

java - Spring MVC : Appropriate extension point for wrapping API Responses

java - 如何将模式名称添加到 Spring Data JPA 中的查询注释

java - ElasticsearchRepository中的FindAllByColumn(List <String> columnValues)无法正常工作

validation - 下拉列表验证消息 mvc

java - 试图访问方法 java.lang.Object.clone()Ljava/lang/Object;来自类 ar.com.fdvs.dj.util.Utils