[에러] Neither BindingResult nor plain target object for bean name ' available as request attribute
2022.10.14발생
- 해당 페이지 넘어가면 발생
원인
- 파라미터 값 오타
- 파라미터 명칭으로 인한 오류
2. 파라미터 명칭으로 인한 오류
-
파라미터 중 requestBookRegistration의 명칭이 너무 길어서 rBRegistration로 변경했는데 파라미터명 일치 문제로 bindingResult의 결과에 오류 발생
-
** 간소화로 인해 코드 중 일부 생략된 부분이 있을 수 있습니다.
오류 코드
@PostMapping("request")
public String userRequest(Model model, @Valid RequestBookRegistration rBRegistration, BindingResult bindingResult) {
if (requestBookService.hasErrors(rBRegistration, bindingResult)) {
return "user/request";
}
requestBookService.save(rBRegistration);
return "user/request";
}
해결
1. 파라미터 값 오타
- model.addAttribute() 및 jsp 등 전달된 값을 확인할 것
2. 파라미터 명칭으로 인한 오류
- 파라미터 명칭을 풀네임으로 그대로 적기
@PostMapping("request")
public String userRequest(Model model, @Valid RequestBookRegistration requestBookRegistration, BindingResult bindingResult) {
if (requestBookService.hasErrors(requestBookRegistration, bindingResult)) {
return "user/request";
}
requestBookService.save(requestBookRegistration);
return "user/request";
}