@RequestParam 어노테이션을 이용한 요청 파라미터 구하기
@RequestParam 어노테이션을 사용하면 메서드의 파라미터를 이용해서 HTTP 요청 파라미터를 받을 수 있다. 다음은 예이다.
@Controller
@RequestMapping("/event")
public class EventController {
@RequestMapping("/detail2")
public String detail2(@RequestParam("id") long eventId, Model model) {
Event event = getEvent(eventId);
if (event == null) {
return REDIRECT_EVENT_LIST;
}
model.addAttribute("event", event);
return "event/detail";
}
// 이하 생략
...
}
스프링은 메서드의 파라미터 타입에 맞게 변환을 한다. 위 코드에서 eventId 파라미터의 타입이 long이므로, "id" 요청 파라미터의 값을 long 타입으로 알맞게 변환해준다.
요청 파라미터의 값이 없거나 해당 타입으로 변환할 수 없는 경우, 스프링은 컨트롤러의 메서드를 실행하지 않고 바로 400 에러 코드를 클라이언트에 응답한다.
요청 파라미터가 필수가 아니라면 다음과 같이 @RequestParam 어노테이션의 required 속성 값을 false로 지정해주면 된다. 만약 요청 파라미터가 존재하지 않으면 400 에러 코드 대신 해당 파라미터에 null을 리턴한다.
@Controller
public class SearchController {
@RequestMapping("/search")
public String search(@RequestParam(value="q", required=false) String query, Model model) {
// 이하 생략
...
}
// 이하 생략
...
}
다음과 같이 defaultValue 속성을 사용하면, 요청 파라미터가 존재하지 않을 때 null 대신 다른 값을 사용하도록 설정할 수 있다.
@Controller
public class SearchController {
@RequestMapping("/search")
public String search(@RequestParam(value="q", defaultValue="") String query, Model model) {
// 이하 생략
...
}
// 이하 생략
...
}
Reference
- 웹 개발자를 위한 Spring 4.0 프로그래밍 (최범균 저)
'Spring' 카테고리의 다른 글
| [Spring] 스프링 MVC(8) - Validator와 Errors/BindingResult (0) | 2022.03.14 |
|---|---|
| [Spring] 스프링 MVC(7) - 커맨드 객체와 @ModelAttribute 어노테이션 (0) | 2022.03.13 |
| [Spring] 스프링 MVC(5) - @RequestMapping 어노테이션 (0) | 2022.03.13 |
| [Spring] 스프링 MVC(4) - 서블릿 매핑 (0) | 2022.03.12 |
| [Spring] 스프링 MVC(3) - 스프링 MVC 설정 (0) | 2022.03.12 |