스프링 MVC - HTTP요청 파라미터 - @ModelAttribute

박진형·2021년 8월 6일
0

Spring

목록 보기
2/9

ModelAttribute

ModelAttribute를 이용해 객체 형태로 파라미터를 전달 받을 수 있다.

스프링 MVC는 @ModelAttribute라는 애노테이션이 있다면 매개변수에 적힌 객체를 생성하고 해당 클래스의 프로퍼티의 setter를 모두 호출해서 파라미터의 값을 바인딩한다.
ex) 파라미터의 이름이 username이라면 객체 내의 setUsername을 호출.

@ModelAttribute 애노테이션 사용

  • @ModelAttribute 클래스 객체이름 형태로 입력받는다.
  • 이 객체에 자동으로 request객체의 파라미터들이 들어간다.
 @ResponseBody
    @RequestMapping("/model-attribute-v1")
    public String modelAttributeV1(@ModelAttribute HelloData helloData)
    {
        log.info("username={}, age={}", helloData.getUsername(), helloData.getAge());
        return "ok";
    }

@ModelAttribute 애노테이션 생략

  • 생략해도 무관하다.

    @ResponseBody
    @RequestMapping("/model-attribute-v2")
    public String modelAttributeV2(HelloData helloData)
    {
        log.info("username={}, age={}", helloData.getUsername(), helloData.getAge());
        return "ok";
    }

@ModelAttribute와 @RequestParam의 혼동

  • @ModelAttribute와 @RequestParam을 함께 사용할 경우 스프링에서는 다음과 같은 규칙을 적용한다.
    • String, int, Integer과 같은 단순타입은 @RequestParam 적용
    • 나머지는 @ModelAttribute 적용 (argument resolver 로 지정해둔 타입 외)

0개의 댓글