java - 不使用 @valid 的 Spring bean 验证

标签 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
    }
//Do something else
}

效果很好。

但现在我遇到了无法提交表单的情况,而是在 javascript 中获取值并通过单击按钮使用 Ajax 发送它们,如下所示。

var nameStr = $("#usrnmbx").val();
var emailidStr = $("#emailidbx").val()
//and more and then send them using ajax

为了实现 bean 验证,我的新方法看起来像这样。

@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) {
              ...........
            }); 
}

关于java - 不使用 @valid 的 Spring bean 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12926433/

相关文章:

java - 如何在 hibernate 和 Spring 中连接两个表

java - 将 li 列表从客户端传递到 Spring MVC Controller

java - Java 中的终止、销毁或退出线程

java - 如何使用 Java 将音频流转换为 MP3?

java - 在 TomCat 上运行的 POI 导致违反加载程序约束

java - @PostFilter 可选

java - 将 UTC 日期转换为毫秒

SpringBoot MongoDB 返回 "Id must be assignable to Serializable! Object of class [null] must be an instance of interface java.io.Serializable"

java - 如何将 @ApiModelProperty dataType 设置为 String 以获取 Swagger 文档

java - 将 Bufferedimage 转换为 MultipartFile