Ultimi mvc molla, utilizzando freemarker.Confuso su come convalidare il modulo mvc di primavera, quali sono le mie opzioni?
Sperando che qualcuno potrebbe dirmi quali sono le mie opzioni sono in termini di convalida di un modulo con MVC primavera, e ciò che il consiglio modo sarebbe quello di fare questo.
Ho una forma che non mappa direttamente a un modello, ha campi di input che al momento della pubblicazione, verrà utilizzato per inizializzare 2 oggetti del modello che ho Sarà quindi necessario per convalidare, e se passano io li salverà .
Se falliscono, voglio tornare al modulo, pre-riempire i valori con ciò che l'utente è entrato e visualizzare i messaggi di errore.
Ho letto qua e là circa 2 metodi, una volta di che ho fatto e capire come funziona:
@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;
}
}
Ora, questo ha funzionato se il mio modulo mappato direttamente alla forma, ma nella mia situazione mi avere:
campi modulo che non si associano a un modello specifico, hanno alcune proprietà di 2 modelli.
prima della convalida occurrs, ho bisogno di creare i 2 modelli manualmente, impostare i valori dalla forma, e impostare manualmente alcune proprietà anche:
chiamata validate su entrambi i modelli (model1, model2), e aggiungere questi messaggi di errore alla raccolta di errori che ho bisogno di passare alla stessa pagina di vista se le cose non funzionano.
quando i posti di forma, devo fare alcune chiamate al database, e sulla base di questi risultati potrebbe essere necessario aggiungere ulteriori messaggi alla collezione errori.
Qualcuno può dirmi come eseguire questo tipo di convalida?
Pseudo codice qui sotto:
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
Aggiornamento
ho utilizzando le annotazioni JSR 303 sui miei modelli in questo momento, e sarebbe bello se posso usare quelli ancora.
Aggiornamento II
Si prega di leggere la descrizione di taglie sotto per un riepilogo di quello che sto cercando.