@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 생략 가능

+ Recent posts