我以传统方式使用了弹簧验证,如下所示:
@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 中放置的验证注释。你们中的任何人都可以提出更好的实施方案吗?提前致谢。