我正在尝试使用 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)
我需要一个我没有的错误实例。我不能使用 BindingResult
或 Errors
。请告知如何进一步进行。
最佳答案
您可以使用 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/