[Spring] 오류 : org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required CarMemberDto parameter 'cdto' is not present]

728x90
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 는 사용자가 요청시 전달하는 값을 오브젝트 형태로 매핑해주는 어노테이션입니다.

 

 

 

오늘의 결론 : 결국은 파라미터 값에 정확한 값을 넣어주자.

728x90