/** * Persist a FormTempate. * * @param formTemplate - FormTemplate. * @param result - used for errorhandling. * @param status - used for session state handling. * @param model - ModelMap * @return navigate to Templatelist or back to TemplateEdit. */ @Transactional @RequestMapping(method = RequestMethod.POST) public String addTemplate( @Valid @ModelAttribute("formTemplate") FormTemplate formTemplate, BindingResult result, SessionStatus status, ModelMap model) { if (result.hasErrors()) { return "TemplateEdit"; } CustomCategory customCategory = formTemplate.getCustomCategory(); if (customCategory != null) { for (Iterator<CustomSubCategory> it = customCategory.getCustomSubCategories().iterator(); it.hasNext(); ) { CustomSubCategory subCategory = it.next(); if (StringUtils.isBlank(subCategory.getName())) { it.remove(); } } } formTemplate.setLastChanged(new Date()); if (formTemplate.getId() == null) { formTemplateRepository.persist(formTemplate); } else { formTemplateRepository.merge(formTemplate); } status.setComplete(); return "redirect:TemplateList"; }