@RequestParam란?
- 스프링에서 제공하는 HTTP 요청 파라미터 값을 편리하게 사용하게 해주는 어노테이션
- 파라미터 이름으로 바인딩하는 방법
- HttpServletRequest의 request.getparameter의 기능과 동일
@RequestParam 속성
name
파라미터 이름을 지정하는 것으로 다른 속성이 없을 경우 "name = " 생략 가능
@RequestParam("itemId") Long itemId
@RequestParam(name = "itemId") Long itemId
required
파라미터의 필수 여부 결정
기본값으로 필수(true)
required가 true 일 경우 해당 파리미터가 없으면 HTTP 상태코드 400반환,
false일 경우 해당 파라미터가 없어도 예외 발생 X
@RequestParam(name = "itemId", required = true) Long itemId
@RequestParam(name = "itemId", required = false) Long itemId
주의할점
파라미터의 이름만 있고 값이 없는 경우 (null과 다름) 빈문자로 취급하여 예외 발생 X
defalutValue
파라미터에 값이 없을 경우 defalutValue 속성을 사용하여 기본값 적용
이경우 기본 값이 설정되기 때문에 required와 함께 사용하면 required 의미가 없음
@RequestParam 사용법
@PostMapping("/order")
public String order(@RequestParam("memberId") Long memberId,
@RequestParam("itemId") Long itemId,
@RequestParam("count") int count){
orderService.order(memberId, itemId, count);
return "redirect:/orders";
}
- Http 요청 파라미터의 이름으로 바인딩하여 그 값을 변수에 저장
<form role="form" action="/order" method="post">
<div class="form-group">
<label for="member">주문회원</label>
<select name="memberId" id="member" class="form-control">
<option value="">회원선택</option>
<option th:each="member : ${members}"
th:value="${member.id}"
th:text="${member.name}" />
</select>
</div>
</form>
- html에서 name으로 받아온다
@PostMapping("/order")
public String order(@RequestParam Long memberId,
@RequestParam Long itemId,
@RequestParam int count){
orderService.order(memberId, itemId, count);
return "redirect:/orders";
}
* HTTP파라미터 이름이 변수랑 동일할 경우 4 @RequestParam의 value 값 생략 가능
@PostMapping("/order")
public String order(Long memberId,
Long itemId,
int count){
orderService.order(memberId, itemId, count);
return "redirect:/orders";
}
* String, int, Integer 등 단순 타입일 경우 @RequestParam 생략 가능
'Spring > 공부' 카테고리의 다른 글
[Spring] @Component, @Repository, @Service, @Controller (0) | 2024.01.17 |
---|---|
[Spring] 생명주기 ( Life Cycle) (0) | 2024.01.16 |
[Spring] 의존객체 자동 주입 (@Autowired, @Resource, @injec 차이) (0) | 2024.01.15 |
[오류] application.xml cvc-elt.1.a: cannot find the declaration of element 'beans'. (0) | 2024.01.11 |
[오류] pom.xml 오류 cvc-elt.1.a:Cannot find the declaration of element 'project' (0) | 2024.01.11 |