Controller에서 Validation 체크시 BindingResult 파람추가시 에러 문제 ...[재질문]
- 작성자 :
- 이*준
- 작성일 :
- 2009-10-20 17:34:56
- 조회수 :
- 4,719
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
같은 질문 에러로그를 첨부해서 올립니다.
[실행환경가이드에 있는 Validation 에 나오는 샘플입니다.]
@Controller
public class UpdateDepartmentController {
@RequestMapping(value = "/updateDepartment.do", method = RequestMethod.POST)
public String onSubmit(@ModelAttribute("department") Department department, BindingResult bindingResult) { <-- 여기 BindingResult 이 파라미터를 넣으면 에러가 납니다.
new DepartmentValidator().validate(department, bindingResult); //validation을 수행한다.
if(bindingResult.hasErrors()){ //validation 에러가 있으면,
return "modifydepartment"; //이 페이지로 이동.
}
try {
departmentService.updateDepartment(department);
return "redirect:/departmentList.do?depth=1";
} catch (Exception e) {
e.printStackTrace();
return "modifydepartment";
}
}
}
[이건 제가 만든 소스입니다]
@RequestMapping(value = "/admin/user/inputUser.do", method = RequestMethod.POST)
public String insertUser ( @ModelAttribute("searchVO") UserDefaultVO searchVO
, UserVO userVO, Model model
, BindingResult bindingResult <-- 안넣으면 에러가 안나지만 Validation 체크하기위해 넣습니다(예제대로).
) throws Exception {
//validation code
new UserValidator().validate(userVO, bindingResult); // validation 수행
if (bindingResult.hasErrors()) {
if(logger.isDebugEnabled()){
logger.debug("UbiUPortalUserController : insertMember >> bindingResult.hasErrors() inside ");
}
return "/admin/user/UbiUPortalAdminUserRegist";
}
memberService.insertMember(userVO);
return "redirect:/admin/user/userList.do";
}
가이드만 봐서는 빠뜨린 내용이 있는지 알지 못하겠는데요.
어디 다른데서 빠진게 있나요?
에러로그는 첨부에 있습니다.
[실행환경가이드에 있는 Validation 에 나오는 샘플입니다.]
@Controller
public class UpdateDepartmentController {
@RequestMapping(value = "/updateDepartment.do", method = RequestMethod.POST)
public String onSubmit(@ModelAttribute("department") Department department, BindingResult bindingResult) { <-- 여기 BindingResult 이 파라미터를 넣으면 에러가 납니다.
new DepartmentValidator().validate(department, bindingResult); //validation을 수행한다.
if(bindingResult.hasErrors()){ //validation 에러가 있으면,
return "modifydepartment"; //이 페이지로 이동.
}
try {
departmentService.updateDepartment(department);
return "redirect:/departmentList.do?depth=1";
} catch (Exception e) {
e.printStackTrace();
return "modifydepartment";
}
}
}
[이건 제가 만든 소스입니다]
@RequestMapping(value = "/admin/user/inputUser.do", method = RequestMethod.POST)
public String insertUser ( @ModelAttribute("searchVO") UserDefaultVO searchVO
, UserVO userVO, Model model
, BindingResult bindingResult <-- 안넣으면 에러가 안나지만 Validation 체크하기위해 넣습니다(예제대로).
) throws Exception {
//validation code
new UserValidator().validate(userVO, bindingResult); // validation 수행
if (bindingResult.hasErrors()) {
if(logger.isDebugEnabled()){
logger.debug("UbiUPortalUserController : insertMember >> bindingResult.hasErrors() inside ");
}
return "/admin/user/UbiUPortalAdminUserRegist";
}
memberService.insertMember(userVO);
return "redirect:/admin/user/userList.do";
}
가이드만 봐서는 빠뜨린 내용이 있는지 알지 못하겠는데요.
어디 다른데서 빠진게 있나요?
에러로그는 첨부에 있습니다.
A
안녕하세요.. 이용준님..
BindingResult의 경우는 참조하는 @ModelAttribute 지정 파라미터 다음에 나와야 하는 제약사항이 있습니다.
이용준님의 작성하신 부분의 insertUser 메소드의 파라미터의 @ModelAttribute로 지정된 UserDefaultVO 다음에 BindingResult를 지정해 보시면 될 것 같습니다.
Spring MVC 구현상의 제약사항으로 이해하시면 될 것 같습니다.
참고로 insertUser의 경우 @ModelAttribute가 UserVO이어야 할 것 같습니다. validation에 사용된 모델도 UserVO이고 validation 점검 시 원래의 값을 유지해야 것이 UserVO이기 때문입니다. 확인해 보시기 바랍니다.
그럼.. 남은 하루도 즐거운 하루되십시오.
감사합니다.
BindingResult의 경우는 참조하는 @ModelAttribute 지정 파라미터 다음에 나와야 하는 제약사항이 있습니다.
이용준님의 작성하신 부분의 insertUser 메소드의 파라미터의 @ModelAttribute로 지정된 UserDefaultVO 다음에 BindingResult를 지정해 보시면 될 것 같습니다.
Spring MVC 구현상의 제약사항으로 이해하시면 될 것 같습니다.
참고로 insertUser의 경우 @ModelAttribute가 UserVO이어야 할 것 같습니다. validation에 사용된 모델도 UserVO이고 validation 점검 시 원래의 값을 유지해야 것이 UserVO이기 때문입니다. 확인해 보시기 바랍니다.
그럼.. 남은 하루도 즐거운 하루되십시오.
감사합니다.