컨트롤러 클래스에 몇 가지 문제가 있습니다. 컨트롤러가 GET 요청으로 주석 된 메소드를 처음으로 호출 할 때 로그인 페이지가 있습니다. 양식이 게시되면 POST 요청으로 주석 된 메소드를 사용합니다.SpringMVC 유효성 확인 문제
양식이 게시 될 때만 유효성 검사를 실행하고 싶습니다. 유효성 검사는 POST 메서드 (@Valid)에 있습니다. 나는 @InitBinder 함수를 가지고 있지만 폼을 POST 할 때 실행되지 않습니다. 따라서 Validation 클래스에서 반환 된 오류 메시지 나 'result.hasErrors()'메서드가 false로 설정되지 않습니다. 내가 GET에 @Valid를두면 유효성 검사 결과를 얻습니다. result.hasErrors()는 false로 설정됩니다.
@InitBinder 함수가 실행될 때 또는 POST 요청시에만 실행을 허용하는 방법을 잘 모르겠습니다. 현재 페이지가 GET 일 때 실행되는 유일한 메시지는 '원하는 것은 환영합니다.'이지만 POST는 '오류 !!!'입니다. 게시물이었고 유효성 검사가 실행되지 않습니다.
코드는 GET의 컨트롤러 클래스
@InitBinder("login")
protected void initBinder(WebDataBinder binder){
binder.setValidator(new LoginValidation());
}
내가 뭘하고 있지 않다 아무것도에서
@RequestMapping(value="login.htm", method=RequestMethod.GET)
public ModelAndView onSubmit(HttpServletRequest request,HttpServletResponse response,Model model, @ModelAttribute("login") Login login,BindingResult result)
throws ServletException {
return new ModelAndView("login","errorMsg", "Welcome it was a get");
}
@RequestMapping(value="login.htm", method=RequestMethod.POST)
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response, @Valid @ModelAttribute Login login, BindingResult result, ModelMap m) throws Exception {
if(result.hasErrors()){
return new ModelAndView("login", "errorMsg", "Errors was detected");
}else{
if (authenticationManager.Authenticate(login) == true){
return new ModelAndView("main","welcomeMessage", message);
}
return new ModelAndView("login","errorMsg", "Error!!! It was a post");
}
후 공백을 다듬기 자신의 질문을 받아 :) – jelies
가 될 때까지 후 2 일 동의하지 못할 것입니다 그게 뭐래? – devdar