/**
   * Process form submit request.
   *
   * @param id id of the controller
   * @param template data template to process
   * @param result binding result
   * @param status the session status
   * @return form continuation
   */
  @RequestMapping(method = {RequestMethod.PUT, RequestMethod.POST})
  public String processSubmit(
      @PathVariable("id") String id,
      @ModelAttribute("spacecontroller") SpaceController template,
      BindingResult result,
      SessionStatus status,
      Model model) {
    new SpaceControllerValidator().validate(template, result);
    if (result.hasErrors()) {
      addNeededEntities(model);
      return "spacecontroller/SpaceControllerEdit";
    } else {
      SpaceController controller = controllerRepository.getSpaceControllerById(id);
      SpaceControllerUtils.copy(template, controller);
      controllerRepository.saveSpaceController(controller);

      status.setComplete();

      return "redirect:/spacecontroller/" + controller.getId() + "/view.html";
    }
  }