1

次のような従来の方法で春の検証を使用しました。

@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 に付けた検証注釈を取得するようには見えません。より良い実装を提案できますか。前もって感謝します。

4

1 に答える 1

0

ajaxでフォーム全体を送信できます。この場合、コマンド オブジェクトは通常のフォーム送信として入力する必要があります。

ここに私のアプローチがあります

        function submitAjaxForm(form, url) {  
        $.post(url, $(form).serialize(),function(data) {
              ...........
            }); 
}
于 2012-10-19T13:30:05.683 に答える