@Override public ModelAndView postEditView( @ModelAttribute("Model") Player model, HttpServletRequest request, BindingResult result) { validator.validate(model, result); if (result.hasErrors()) { return getEditView(model); } // make sure not to overwrite passwordHash, verfied etc. Player player; if (model.getId() != null) { player = playerDAO.findById(model.getId()); } else { Player existingPlayer = playerDAO.findByEmail(model.getEmail()); if (existingPlayer != null) { result.addError(new ObjectError("email", msg.get("EmailAlreadyRegistered"))); return getEditView(model); } player = new Player(); } player.setEmail(model.getEmail()); player.setFirstName(model.getFirstName()); player.setLastName(model.getLastName()); player.setPhone(model.getPhone()); player.setGender(model.getGender()); player.setInitialRanking(model.getInitialRanking()); playerDAO.saveOrUpdate(player); return redirectToIndex(request); }