org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
- Resolved [org.springframework.web.bind.MissingServletRequestParameterException
: Required CarMemberDto parameter 'cdto' is not present]
WARN : org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required CarMemberDto parameter 'cdto' is not present]
이런식의 오류가 나타났습니다.
Controller 코드 상에서 parameter 값을 요구 하였는데 요청에 있어서, 필수 파라미터 값이 없기 현재 없기 때문에
나타나는 에러로 확인했습니다
제가 오류가났던 원인입니다.
@PostMapping("/car/add")
public String insert(@RequestParam CarMemberDto cdto) {
inter.insert(cdto);
return "redirect:list";
}
CarMemberDto 라는 cdto값들을 다 파라미터 값으로 다 보내줘야하는데,
@RequestParam을 사용하게되면, 1개의 값만 받아서 1개의 값만 보내주는 것이다
그러므로 나는 5개의 값을 보내줘야했는데 1개의 값만 보내주게 되닌까, 에러가 나는 것 이였다.
그래서 코드를 이렇게 고치니 잘 작동이 되었다.
@PostMapping("/car/add")
public String insert(@ModelAttribute CarMemberDto cdto) {
inter.insert(cdto);
return "redirect:list";
}
@RequestParam --> @ModelAttribute 로 바꾸닌까 해결이 되었다.
여러개의 값을 db로 보내줘야한다면 @ModelAttribute 어노테이션을 사용하면 편리하게 보낼 수 있다
만약에 1,2개의 값만 보내게 된다면, @ReqeustParam을 2번 써서, 변수 2개를 파라미터 값으로 보내주면 된다.
@RequestParam 어노테이션은 사용자가 요청시 전달하는 값을 Handler(Controller)의 매개변수로 1:1 맵핑할때 사용되는 어노테이션
@ModelAttribute 는 메소드레벨, 메소드의 파라미터 두군데에 적용이 가능합니다.
저는 메소드의 파라미터에 사용되는 경우에 대해서 다루었습니다.
@ModelAttribute 는 사용자가 요청시 전달하는 값을 오브젝트 형태로 매핑해주는 어노테이션입니다.
오늘의 결론 : 결국은 파라미터 값에 정확한 값을 넣어주자.