我用一些 JSR-303 验证器注释制作了一个模型对象:
public class UserInfoBasicModel implements Serializable{
@NotNull(message="cannot be null")
@NotEmpty(message="cannot be empty")
private String name;
//getter and setter
//..ignored..
}
在控制器中自动绑定数据:
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(method = RequestMethod.POST, value = "/registry/")
public String registry(HttpServletRequest request,
ModelMap modelMap,
@Valid UserInfoBasicModel userInfoBasicModel,
BindingResult result) {
//...some code here...
}
}
在上述情况下,它可以很好地进行验证。但是当我将模型封装到另一个对象中时,如下所示,UserInfoBasicModel 上的验证不再起作用:
封装 UserInfoBasicModel 对象的 Object:
public static class UserUpdateFormTransmitter {
@Valid
private UserInfoBasicModel userInfoBasicModel;
//getter and setter
//..ignored..
}
控制器:
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(method = RequestMethod.POST, value = "/registry/")
public String registry(HttpServletRequest request,
ModelMap modelMap,
@Valid UserUpdateFormTransmitter userUpdateFormTransmitter,
BindingResult result) {
//...some code here...
}
}
我想知道为什么 @valid 注释不像JSR 303:Bean Validation所说的那样递归地工作。谁能给我一个解决方案,以便我可以递归地验证我的对象,非常感谢!!!!