2016-09-18 7 views
2

私は春mvcにユーザー登録アプリケーションを持っています。 ユーザークラスを保存するとき、通常はユーザーを検証し、UserValidatorクラスに従って保存しますが、同じユーザーを編集する場合、同じ方法で検証できません。エンドレスループに進みます。私は編集ボタンを押したときに 春mvc編集時にユーザーが検証できない

@RequestMapping(value = {"/edit-user-{id}"}, method = RequestMethod.GET) 
    public String editUser(@PathVariable Long id, ModelMap model) { 
     User user = userService.findById(id); 
     if (!user.getUsername().equals(context.getUserPrincipal().getName())) { 
      return "login"; 
     } 
     model.addAttribute("userForm", user); 
     model.addAttribute("edit", true); 
     return "registration"; 
    } 
    @RequestMapping(value = {"/edit-user-{id}"}, method = RequestMethod.POST) 
    public String updateUser(@Valid User userForm, BindingResult bindingResult, ModelMap model, @PathVariable Long id) { 
     model.addAttribute("edit", true); 
     model.addAttribute("success", "User " + userForm.getFirstName() + " " + userForm.getLastName() + " updated successfully"); 
     userValidator.validate(userForm, bindingResult); 
     if (bindingResult.hasErrors()) { 
      return "registration"; 
     } 
     userService.updateUser(userForm); 
     return "registrationsuccess"; 
    } 

は誰も助けてください編集するときにケースを

@RequestMapping(value = "/registration", method = RequestMethod.GET) 
    public String registration(Model model) { 
     model.addAttribute("userForm", new User()); 
     return "registration"; 
    } 
    @RequestMapping(value = "/registration", method = RequestMethod.POST) 
    public String registration(@ModelAttribute("userForm") User userForm, BindingResult bindingResult, HttpServletRequest request) { 
     userValidator.validate(userForm, bindingResult); 
     if (bindingResult.hasErrors()) { 
      return "registration"; 
     } 
     userService.saveUser(userForm); 
     securityService.autologin(userForm.getUsername(), userForm.getPasswordConfirm()); 
     LOGGER.info("user with username %s successfully registered", userForm.getUsername()); 
     return "redirect:/welcome"; 
    } 

、このいずれかをされて保存するときに、このような場合は、このコードで何が間違っている、それは何もしません、それは無限ループに陥るようです。

答えて

0

if (bindingResult.hasErrors()) { 
     return "forward:/registration"; 
    } 
にコード

if (bindingResult.hasErrors()) { 
     return "registration"; 
    } 

を変更することによって解決される問題

関連する問題