🍃 𝗦𝗽𝗿𝗶𝗻𝗴 𝗕𝗼𝗼𝘁

컨트롤러 @RequestParam 기본값 설정하기@RequestParam(required = false)

비타민찌 2022. 3. 7. 13:24
728x90

컨트롤러 @RequestParam 기본값 설정하기

@RequestParam(required = false)

 

@Controller에서 파라미터를 하나 받아보자.

@GetMapping("/test/{cnt}")
public String methodName(@RequestParam int cnt){
  // TODO..
  return "test";
}
 

위와 같이 코드를 작성하면 "localhost:8080/test/3"과 같이 호출했을 때 cnt 값이 3이 된다.

여기서 만약 "localhost:8080/test"와 같이 변수를 넣어주지 않으면 에러가 발생한다.

Resolved [org.springframework.web.bind.MissingPathVariableException: Missing URI template variable 'cnt' for method parameter of type int
 

@RequestParam은 Controller 메소드의 파라미터와 웹요청 파라미터와 맵핑하기 위한 어노테이션인데

관련 속성은 아래와 같다.

이름
타입
설명
value
String
파라미터 이름
required
boolean
해당 파라미터가 반드시 필수인지의 여부. 기본값은 true.

required 조건이 없으면 기본값은 true, 즉 필수 파라미터이다. 파라미터 pageNo가 존재하지 않으면 Exception이 발생한다.

 

이럴 때는 아래와 같이 처리할 수 있다.

@GetMapping(value = {"/test/{cnt}", "/test"})
public String methodName(@RequestParam(required = false) Integer cnt){
  // TODO..

  return "test";
}
 
 

 

 

또 다른 해결방법으로는 Optional도 있다는데 이는 다음 기회에!

 

에러 자세한 원인: https://devbox.tistory.com/entry/Spring-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC-%EB%A9%94%EC%84%9C%EB%93%9C%EC%9D%98-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%ED%83%80%EC%9E%85

728x90