본문 바로가기
Java && Spring

Neither BindingResult nor plain target object for bean name 'partner' available as request attribute

by 행복 개발자 2022. 6. 14.

jsp나 thymeleaf 등 뷰관련 템플릿 개발 시 자주 볼 수 있는 메시지인데  내용 슬쩍 보면 partner 을 뷰에서 사용할 수 없다는 것이다. 

 

결론은 아래 코드에서 @ModelAttribute가 빠져서 view에서는 partner 필요한데 없기 때문이다. 

@Valid @ModelAttribute("partner") RegisterRequest request

참고로  아래 두 코드는 같습

@ModelAttribute("memberForm") Member form코드는 

model.addAttribute("memberForm", form) 대체됩니다. 

 

1. @ModelAttribute 생략할 수 있는데 생략하면 메서드 내에서 별도로 addAttribute를 해야 한다. 

 

public void create(RegisterRequest request){

  model.addAttribute("partner", request);

}

 

 

2.  그런데 따로 addAttribute를 하지 않으면 자동으로 아래와 같이 인식되는데 

 

model.addAttribute(request);

이때 키는 자동으로 객체타입의 앞글자를 소문자로 변환해서  사용된다. 

model.addAttribute("RegisterRequest",request);

 

따라서, 

view에서는 모델에서 partner을 꺼내야되는데  RegisterRequest 키만 있어서 오류가 발생했던것이다.