最新春季mvc,使用freemarker。如何驗證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種型號,從表格中設置的值,然後手動設置一些屬性也:在兩種模型(模型1,模型2)
呼叫驗證,並追加這些錯誤消息給我需要傳遞迴相同視圖頁面的錯誤集合,如果事情不起作用的話。
當表單的帖子,我必須做一些數據庫調用,以及基於這些結果可能需要添加額外的信息到錯誤集合。
有人能告訴我如何做這種驗證?
僞代碼如下:
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
請閱讀下面的賞金爲說明什麼,我正在尋找一個總結。