验证 – 可以在spring mvc中递归地检查字段上的@Valid注释吗?

我用一些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 annotaion不会像JSR 303: Bean Validation所说的那样递归地工作.可以任何人给我一个解决方案,这样我就可以递归地验证我的对象,非常感谢!!!!

最佳答案
我从未进行过递归验证,但根据this,只需用@Valid标记子对象即可.

转载注明原文:验证 – 可以在spring mvc中递归地检查字段上的@Valid注释吗? - 代码日志