It throws Exception if controller called first time even though added @SessionAttributes({“form”}) to class. So add following populateForm method will fix this.
@SessionAttributes({"form"})
@Controller
public class MyController {
@ModelAttribute("form")
public Form populateForm() {
return new Form(); // populates form for the first time if its null
}
@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) {
// ..etc etc
}
}