freemarkerを使用して、最新のspring mvc。spring mvcフォームの検証方法に混乱がありますが、私の選択肢は何ですか?
誰かが私のオプションがspring mvcでフォームを検証するという点について教えてくれることを願っています。これを行うにはどうすればよい方法でしょうか。
モデルに直接マップされていないフォームがあります。入力フィールドには投稿時に2つのモデルオブジェクトを初期化するための入力フィールドがあり、検証する必要があります。 。
エラーが発生した場合は、フォームに戻り、ユーザーが入力した値をあらかじめ入力してエラーメッセージを表示します。
私はここに読んだことがあると私は行って、それがどのように動作するかを理解したらそのうち約2メソッド、そこに:私は私のフォームは、フォームに直接マッピングされている場合
@RequestMapping(...., method = RequestMethod.POST)
public ModelAndView myMethod(@Valid MyModel, BindingResult bindingResult) {
ModelAndView mav = new ModelAndView("some/view");
mav.addObject("mymodel", myModel);
if(bindingResult.hasErrors()) {
return mav;
}
}
は今、これは働いたが、私の状況で
フォームフィールドは、特定のモデルにはマップされませんが、2つのモデルのプロパティがいくつかあります。
検証occurrs前、私は手動で2つのモデルを作成する必要があり、フォームからの値を設定し、手動でも、いくつかのプロパティを設定します。
コールは、両方のモデル(MODEL1、MODEL2)に検証、および追加しますこれらのエラーメッセージは、エラーが発生した場合、同じビューページに戻す必要があります。
フォームの投稿時に、データベース呼び出しを行う必要があり、その結果に基づいてエラーコレクションに追加のメッセージを追加する必要があります。
この種の検証方法を教えてもらえますか?
以下の疑似コード:
Model1 model1 = new Model1();
Model2 model2 = new Model2();
// manually or somehow automatically set the posted form values to model1 and model2.
// set some fields manually, not from posted form
model1.setProperty10(GlobalSettings.getDefaultProperty10());
model2.setProperty11(GlobalSettings.getDefaultProperty11());
// db calls, if they fail, add to errors collection
if(bindingResult.hasErrors()) {
return mav;
}
// validation passed, save
Model1Service.save(model1);
Model2Service.save(model2);
redirect to another view
更新
私は今、私のモデルにJSR 303アノテーションを使用している、と私はまだそれらを使用することができれば、それは素晴らしいだろう。
更新II
私が探しています何の概要については、以下の恵みの説明をお読みください。