[Spring Boot] @RequestParam 어노테이션 사용법
@RequestParam
@RequestParam 어노테이션은
Servlet request parameters (Query Parameter, Form data)를
Controller의 메소드 파라미터와 바인딩하는 역할을 한다.
기본 사용법
@GetMapping("/say-hello")
public String helloMvc(@RequestParam String name, Model model) {
model.addAttribute("data", name);
return "hello-template";
}
http://localhost:8080/say-hello?name=anna
위와 같이 쿼리 파라미터로 전달된, name이
helloMvc() 메소드의 파라미터 이름 'name'과 바인딩된다.
name, value 속성
아래와 같이,
명시적으로 쿼리 파라미터의 이름과 Controller 메소드의 파라미터 이름을 바인딩할 수 있다.
@GetMapping("/say-hello")
public String helloMvc(@RequestParam("nameParam") String name, Model model) {
model.addAttribute("data", name);
return "hello-template";
}
@GetMapping("/say-hello")
public String helloMvc(@RequestParam(value="nameParam") String name, Model model) {
model.addAttribute("data", name);
return "hello-template";
}
@GetMapping("/say-hello")
public String helloMvc(@RequestParam(name="nameParam") String name, Model model) {
model.addAttribute("data", name);
return "hello-template";
}
http://localhost:8080/say-hello?nameParam=anna
위 코드들은 쿼리 파라미터 'nameParam'를,
Controller 메소드의 name 파라미터와 비인딩 한다.
@RequestParam에 사용할 수 있는 속성
- name, value
- required
- defaultValue
name, value
이전 예제와 같이,
쿼리 파라미터와 Controller 메소드의 파라미터의 이름이 다른 경우, 명시적으로 바인딩한다.
required
기본 값은 true이다.
required가 true일 때, 해당 파라미터가 입력되지 않으면 에러가 발생한다.
@GetMapping("/say-hello")
public String helloMvc(@RequestParam(required = false) String name, Model model) {
return name;
}
@RequestParam(required = false) String name
위와 같이, required를 false로 설정하면,
name 파라미터가 입력되지 않더라도 에러가 발생하지 않는다.
name 파라미터가 입력되지 않으면, name 변수는 null 값을 가진다.
defaultValue
defaultValue 속성을 이용해서, 파라미터가 입력되지 않은 경우의, 기본값을 설정할 수 있다.
defaultValue가 필요한 경우는, 파라미터가 입력되지 않는 경우이기 때문에,
만약 defaultValue를 설정하면, required=false를 설정하지 않더라도,
자동으로 required 값은 false가 된다.
@GetMapping("/say-hello")
public String helloMvc(@RequestParam(defaultValue = "Anna") String name, Model model) {
return name;
}
defaultValue를 "Anna"로 설정하였다.
http://localhost:8080/say-hello
위와 같이, name 쿼리 파라미터를 전달하지 않으면,
name 값은 "Anna"가 된다.
http://localhost:8080/say-hello?name=tom
위와 같이, name 쿼리 파라미터를 tom으로 하면
name 값은 "tom"이 된다.