DEV/Spring
[Spring] @RequestParam의 이해
Bi3a
2023. 11. 21. 22:41
반응형
@RequestParam
HTTP 요청으로 View에서 값을 바인딩해 받아옵니다.
@RequestParam("가져올 데이터의 이름", Type T 변수명 var, Model model) 형태로 쓰입니다.
required, defaultValue
// 기본
String inputUsername(@RequestParam(name = "name", required = true,
defaultValue = "guest"), String user)
return user;
// 파라미터 이름이 변수와 같으면 생략 가능
String inputUsername(@RequestParam("name", required = true,
defaultValue = "guest"), String user)
return user;
예제는 뷰에서 해당 이름의 파라미터 값을 받아와 매개변수인 user로 바인딩하는 작업을 수행합니다.
- required : 파라미터에 원하는 value 값이 없는 경우 required = false 면 null 값을 저장합니다.
- required = true 면 404 error가 발생합니다.
defaultValue : 요청한 value 값이 없을 때 defaultValue 값으로 대체됩니다.
- required = true에서 발생하는 404 error를 방지합니다.
@RequestParam의 생략
@RequestParam은 매개변수 = 데이터를 전송받는 폼 필드의 이름과 일치할 시 생략이 가능합니다.
@PostMapping("/write")
public String write(@RequestParam("title") String title, @RequestParam("content") String content){
articleService.create(title, content);
return "redirect:/article/list";
}
예제는 /write로 접속 시 view 단에서 폼 필드의 이름이 title, content에 해당하는 value를 전송받아 인자로 입력받습니다.
그러나, 폼 필드의 이름과 메소드 매개변수가 동일하게 title, content이라면 Spring은 이를 인식해 바인딩을 수행합니다.
따라서, 명시적인 @RequestParam이 생략 가능하며, 해당 내용은 아래와 같이 바꿔 적용할 수 있습니다.
@PostMapping("/write")
public String write(String title, String content){
articleService.create(title, content);
return "redirect:/article/list";
}
반응형