Najnowsza wiosna mvc, za pomocą freemarker.Mylił się, jak sprawdzić wiosenny formularz mvc, jakie mam opcje?
nadzieję, że ktoś mógłby mi powiedzieć, jakie są moje możliwości są w zakresie walidacji formularza z wiosny MVC, a co polecić sposób byłoby to zrobić.
Mam formularz, który nie jest mapowany bezpośrednio do modelu, ma pola wejściowe, które po wysłaniu będą używane do zainicjowania 2 obiektów modelu, które następnie będę musiał zweryfikować, a jeśli przejdą, będę je zapisywać .
Jeśli tego nie chcę, aby wrócić do formy, wstępnie wypełnić wartości co wszedł użytkownik i wyświetla komunikaty o błędach.
mam przeczytać tutaj i tam około 2 metody, które kiedyś zrobiłem i zrozumieć, jak to działa:
@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;
}
}
Teraz to działało jeśli moja forma odwzorowane bezpośrednio do formy, ale w mojej sytuacji mam ma:
pól formularza, które nie są mapowane do żadnego konkretnego modelu, mają kilka właściwości z 2 modeli.
przed occurrs walidacja, muszę ręcznie tworzyć modele 2, ustawić wartości z formularza i ręcznie ustawić pewne właściwości również:
połączeń validate w obu modelach (model1, MODEL2) oraz dołączyć te komunikaty o błędach do kolekcji błędów, które muszę przekazać z powrotem do tej samej strony widoku, jeśli coś nie działa.
kiedy słupki forma, muszę zrobić kilka połączeń z bazą danych, a na podstawie tych wyników może trzeba dodać dodatkowe komunikaty do kolekcji błędów.
Czy ktoś może mi powiedzieć, jak wykonać tego rodzaju weryfikację?
Pseudo kod poniżej:
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
Aktualizacja
Mam użyciu JSR 303 adnotacje na moich modeli teraz, i byłoby wspaniale, jeśli mogę użyć tych nadal.
Aktualizacja II
Proszę przeczytać poniższy opis nagród na podsumowanie tego, co szukam.