본문 바로가기
✨ Back-end/Spring-Boot

[Spring] 어노테이션 @RequestParam 과 @ModelAttribute

by 환풍 2023. 3. 15.
728x90
반응형

@RequestParam 과 @ModelAttribute은 매개 변수에 어노테이션을 사용할 수 있다.

밑의 test 예제로 공부해보았다.


@RequestParam

test1 페이지 -> test2 페이지

<a th:href="@{/test2(name=java)}">  </a>

타임리프 th:href 을 이용하여 java 데이터를 name이라는 이름으로 test2 컨트롤러에 넘긴다.

 

넘어오는 데이터를 받는 상세 방법

@RequestParam name은 넘어오는 데이터의 이름이다.

즉, name이라는 이름으로 넘어온 이름을 data로 적용시킬 수 있다. 따라서 data = java를 담고있다.

콘솔창


test2 페이지 -> test3 페이지

<a href="/test3"> test3로 이동.</a>

여기서는 그냥 컨트롤러 이동만 해주고, 데이터는 안넘겨 줬다.

 

@RequestParam의 required는 데이터를 필수로 받아올 것이라는 의미인데, true로 주면서

데이터가 없으면 오류를 출력한다.

 

즉, @RequestParam(required = true) : 반드시 파라메터가 넘어와야한다.

 

위 결과 페이지를 보다시피 required false로 주게되면 data 값에 null로 표기된다.

왜? 데이터를 이전페이지에서 안받고 넘겼으니까,, 그리고 페이지는 정상적으로 출력된다.

 

그럼 defaultValue 는 무엇일까?

보다 시피 data 값이 null 이었는데, java로 바뀐 것을 확인할 수 있다. 


@ModelAttribute

커맨드 객체는 html로 자동으로 넘어갈 때 클래스명에서 앞글자만 소문자로 바꿔 넘어간다.

그래서 member를 가져가는게 아니라 memberVO를 가져가야한다.

근데 내가 바꾸고 싶다. 어떻게하냐?

넘어가는 커맨드 객체의 이름을 변경하면 된다.

커맨드 객체 앞에 @ModelAtrribute를 쓰면 (" 데이터 ") 데이터 값으로 넘어간다.

따라서 member로 넘어갈 것이다.

728x90
반응형

댓글