본문 바로가기

JAVA HTML JAVASCRIPT/소오스

[Spring] @Modelattribute 개념 정리 어떻게 작동하는걸까?

728x90
반응형

Spring MVC에서 @ModelAttribute을 메소드의 파라미터로 사용할경우 프로그램이 어떻게 돌아가는지 궁금해졌다.

 

일단 내 컨트롤 단은 이렇게 생겼고 , test메소드안에 @ModelAttribute("test") 를 파라미터로 가지고있는 형태이다. 결과는 true,false를 반환하게 해놓았다.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

@Controller

public class TestController {

 

    @Autowired

    private TestService service;

    @GetMapping("/test")

    public String test(@ModelAttribute("test") Test test, Model model) {

        

        model.addAttribute("result", service.getResult(test));

        

        return "test";

    }

}

여기는 내 화면단, 기본적으로 3개의 파라미터와 name값이 Test클래스의 인스턴스명들과 일치한다.(좀 이따가 설명하겠지만 자동으로 binding 시키려면 name값을 일치시켜줘야한다.)

view

@ModelAttribute 선언 후 자동으로 진행되는 작업들은 다음과 같다.

 

1. 파라미터로 넘겨 준 타입의 오브젝트를 자동으로 생성한다.

내 코드에서는 Test 클래스의 객체 test를 자동으로 생성한다. 이때 @ModelAttribute가 지정되는 클래스는 빈 클래스여야 하고 getter, setter가 만들어져야한다.

 

2.생성된 오브젝트(test) HTTP로 넘어 온 값들을 자동으로 바인딩한다.

http://localhost:3001/biz/test?testId=1&testName=1&testPwd=1

이렇게 들어오는 값들이 Test클래스의 testId, testName, testPwd  각각 해당변수의 setter를 통해서 해당 멤버 변수에로 binding된다.

return false

3.마지막으로 @ModelAttribute 어노테이션이 붙은 객체가 (Test객체) 자동으로 Model객체에 추가되고 뷰단으로 전달된다.

@ModelAttribute("test") Test test 에서 가로안에있는 test 값을 통해서 뷰단에서 데이터들을 호출할수있다.



출처: https://donggu1105.tistory.com/14 [인생은 속도가 아니라 방향이다]

728x90
반응형

'JAVA HTML JAVASCRIPT > 소오스' 카테고리의 다른 글

배열(Array) 이란?  (0) 2021.04.15
Html - form태그 내 onsubmit 이벤트  (0) 2021.04.14
컨트롤러 메서드의 파라미터 타입  (0) 2021.04.13
[spring] @RequestParam 사용하기  (0) 2021.04.13
Form onsubmit  (0) 2021.04.13