春季MVC和JSR 303
-
10-10-2019 - |
题
我使用的是Spring 3和JSR303。我有一个形式的备用对象,其嵌套对象需要验证。在下面的示例中,如何验证FormObject.getFoo().getBean()?当我运行下面的代码时,即使HTML页面不提交验证时,结果参数始终是空的,即使验证应失败。请注意,当我通过调用手动验证它时,它有效(即验证失败) validate(formObject.getFoo().getBean(), Bean.class)
.
@Controller
public class FormController {
@RequestMapping(method = RequestMethod.POST)
public void process(HttpServletRequest request, @Valid FormObject formObject, BindingResult result) {
...
}
// This is the class that needs to be validated.
public class Bean {
@NotBlank
private String name;
}
public class Foo {
private Bean bean;
}
public class FormObject {
private Foo foo;
}
}
解决方案
如果您想验证将级联下降到子对象中,则必须将@valid注释放在父对象的字段上:
public class Bean {
@NotBlank
private String name;
}
public class Foo {
@Valid
private Bean bean;
}
public class FormObject {
@Valid
private Foo foo;
}
不隶属于 StackOverflow