Mit*_*pta 5 java validation annotations spring-mvc
我正在使用@valid和@initbinder来验证传递给服务的数据,但我面临的问题@InitBinder是全局工作,即
@InitBinder // possible to leave off for global behavior
protected void initBinder(WebDataBinder binder){
binder.setValidator(new LoginRequestValidator());
}
Run Code Online (Sandbox Code Playgroud)
而不是像我有一个名为LoginRequest的模型对象的特定模型属性:
@InitBinder("LoginRequest") // possible to leave off for global behavior
protected void initBinder(WebDataBinder binder){
binder.setValidator(new LoginRequestValidator());
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,验证器根本没有被调用..这是正确的方法吗?还是我错过了什么?
a b*_*ver 21
看一下你的方法的签名就必须如此
@InitBinder("loginRequest")
Run Code Online (Sandbox Code Playgroud)
用小升
值@InitBinder可以是以下之一
@ a-better-oliver的答案很好,但是下面是解决Spring相同问题的另一种方法,它更冗长但类型安全:
@InitBinder
protected void initBinder(WebDataBinder binder){
if (binder.getTarget() != null
&& LoginRequest.class.equals(binder.getTarget().getClass())) {
binder.setValidator(new LoginRequestValidator());
}
}
Run Code Online (Sandbox Code Playgroud)
这样,我们就不必依赖于硬编码的字符串,也不必关心Spring如何公开未命名的属性。
| 归档时间: |
|
| 查看次数: |
7477 次 |
| 最近记录: |