Java 未使用@valid的Springbean验证

Java 未使用@valid的Springbean验证,java,spring,spring-mvc,bean-validation,Java,Spring,Spring Mvc,Bean Validation,我以传统方式使用了spring验证,如下所示: @RequestMapping(value="userRegistration", method = RequestMethod.POST) public ModelAndView registerUser(@Valid UserAccountVO userAccountVO, BindingResult result,Model model){ if (result.hasErrors()){ // Do something

我以传统方式使用了spring验证,如下所示:

@RequestMapping(value="userRegistration", method = RequestMethod.POST)
public ModelAndView registerUser(@Valid UserAccountVO userAccountVO, BindingResult result,Model model){
    if (result.hasErrors()){
    // Do something
    }
//Do something else
}
这很好用

但现在我遇到了这样的情况:我不能提交表单,而是用javascript获取值,并在单击按钮时使用Ajax发送它们,类似这样的事情

var nameStr = $("#usrnmbx").val();
var emailidStr = $("#emailidbx").val()
//and more and then send them using ajax
@RequestMapping(value = "/userRegistration", method = RequestMethod.POST)
public @ResponseBody JSONresponse registerUser(HttpServletRequest request,@RequestParam(value = "name") String name, // and more){

UserAccountVO userAccountVO = new UserAccountVO(name, emailId,password, confirmPassword);
BindingResult result = new BeanPropertyBindingResult(userAccountVO,"userAccount");
userAccountValidator.validate(userAccountVO, result); //userAccountValidator is spring Validator implementation 
if (result.hasErrors()) {
 //Do something
}
//Do something else
}
因此,为了实现bean验证,我的新方法如下所示

var nameStr = $("#usrnmbx").val();
var emailidStr = $("#emailidbx").val()
//and more and then send them using ajax
@RequestMapping(value = "/userRegistration", method = RequestMethod.POST)
public @ResponseBody JSONresponse registerUser(HttpServletRequest request,@RequestParam(value = "name") String name, // and more){

UserAccountVO userAccountVO = new UserAccountVO(name, emailId,password, confirmPassword);
BindingResult result = new BeanPropertyBindingResult(userAccountVO,"userAccount");
userAccountValidator.validate(userAccountVO, result); //userAccountValidator is spring Validator implementation 
if (result.hasErrors()) {
 //Do something
}
//Do something else
}
但这看起来很脏。我绝对认为有更好的方法可以做到这一点。这看起来不像是我在POJO中提供的验证注释。 你们谁能提出更好的实施方案。
提前感谢。

您可以使用ajax提交整个表单。在这种情况下,命令对象应该作为普通表单提交填充

这是我的便签

        function submitAjaxForm(form, url) {  
        $.post(url, $(form).serialize(),function(data) {
              ...........
            }); 
}