Ho un oggetto modulo che ho impostato per richiedere nel gestore di richieste GET nel mio controller Spring. Prima volta che l'utente accede alla pagina, è necessario creare un nuovo oggetto modulo e impostarlo su richiesta. Se l'utente invia un modulo, l'oggetto modulo viene popolato dalla richiesta e ora l'oggetto modulo ha tutti gli attributi di utente. Quindi il modulo viene convalidato e se la convalida è ok, allora il modulo viene salvato nel database. Se il modulo non è convalidato, voglio salvare l'oggetto modulo in sessione e quindi reindirizzare a GET pagina di gestione delle richieste. Quando la richiesta viene reindirizzata al gestore GET, deve controllare se la sessione contiene oggetto modulo.Spring Framework 3 e attributi di sessione
ho capito che c'è @SessionAttributes ("forma") l'annotazione in primavera, ma per qualche ragione non funziona seguendo, perché in un primo momento, modulo di attributo sessione è nullo e dà errore:
org.springframework.web.HttpSessionRequiredException: Session attribute 'form' required - not found in session
Ecco il mio controller:
@RequestMapping(value="form", method=RequestMethod.GET)
public ModelAndView viewForm(@ModelAttribute("form") Form form) {
ModelAndView mav = new ModelAndView("form");
if(form == null) form = new Form();
mav.addObject("form", form);
return mav;
}
@RequestMapping(value="form", method=RequestMethod.POST)
@Transactional(readOnly = true)
public ModelAndView saveForm(@ModelAttribute("form") Form form) {
FormUtils.populate(form, request);
if(form.validate())
{
formDao.save();
}
else
{
return viewForm(form);
}
return null;
}
Mi ha aiutato ma, la sua eccezione di lancio se chiamato la prima volta. – digz6666
@ digz6666, vedere [# SPR-4452] (https://jira.springsource.org/browse/SPR-4452) –
Sarebbe utile se la primavera implementasse un'annotazione di parametro metodo che consentisse l'accesso agli attributi di sessione (nel allo stesso modo puoi accedere ai parametri della richiesta). 'public void doSometing (@SessionAttribute (" cat ") Cat cat) {' –