@RequestMapping( value = {"/save"}, method = RequestMethod.POST) public ModelAndView save( @ModelAttribute("backup") @Valid Backup backup, BindingResult result, RedirectAttributes redirectAttributes) { if (result.hasErrors()) return editView(backup); if (!canWrite(backup.getOutputFolder())) { ObjectError error = new ObjectError("backup", "The provided output folder needs write permission"); result.addError(error); return editView(backup); } if (backup.getDatabases() == null || backup.getDatabases().size() == 0) { ObjectError error = new ObjectError("databases", "At least one database needs to be selected"); result.addError(error); return editView(backup); } if (backup.getId() == null) backupService.save(backup); else backupService.update(backup); redirectAttributes.addFlashAttribute("backup", backup); return new ModelAndView("redirect:/backups/list"); }