我做一個模型對象與一些JSR-303驗證註釋:可以@Valid註釋檢查字段在春季MVC遞歸?
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對象的對象:
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 annotaion不能遞歸工作,就像JSR 303: Bean Validation說的那樣。任何人都可以給我一個解決方案,這樣我就可以遞歸地驗證我的對象,非常感謝!
也許第二有效可以省略?第一個Valid應該在整個模型中級聯。 – tstorms 2013-02-18 15:38:28
我正在做一些與Spring 3.2.4.RELEASE非常相似的東西,並且在'UserUpdateFormTransmitter'中爲我的'userInfoBasicModel'添加'@ Valid'使其對我有效。沒有它,嵌套驗證被忽略。 – 2014-02-18 03:28:14