IT/development

[Spring]@ModelAttribute 어노테이션

알 수 없는 사용자 2022. 11. 30. 07:12
반응형

목차

    스프링 @ModelAttribute

    스프링MVC의 Controller는 기본적으로 Java Beans 규칙에 맞는 객체는 다시 화면으로 객체를 전달함
    좁은 의미에서 Java Beans 규칙은 단순히 생성자가 없거나 빈 생성자를 가져야 하며, getter/setter를 가진 클래스의 객체들을 의미함
    앞의 예제에서 parameter로 사용되었던 SampleDTO의 경우는 Java Beans 규칙에 맞기 때문에 자동으로 다시 화면까지 객체가 전달되었음(전달 될 때는 클래스명의 앞글자는 소문자로 처리됨)
    반면 기본 자료형의 경우는 parameter로 선언하더라도 기본적으로 화면까지 전달되지는 않음
    아래 이미지처럼 SampleController에서 method를 작성한 뒤 브라우저에서 parameter의 값을 추가해서 호출해 보면 dto의 값은 화면에 전달되지만, page의 값은 화면에 전달되지 않음

    화면에서의 결과는 아래와 같이 page에는 추가한 값이 안 들어왔음

    @ModelAttribute는 강제로 전달받은 parameter를 Model에 담아서 전달하도록 할 때 필요한 어노테이션임, @ModelAttribute가 걸린 Parameter는 타입에 관계없이 무조건 Model에 담아서 전달되므로, parameter로 전달된 데이터를 다시 화면에서 사용해야 할 경우에 유용하게 사용됨

    SampleController에 추가한 메서드의 parameter에 @ModelAttribute를 추가하면 아래와 같이 됨, 기본자료형에 @ModelAttribute를 적용할 경우에는 반드시 @ModelAttribute("변수명") value(int page) 이런식으로 지정해야 함

    브라우저에서 호출 시 화면에 page의 값이 잘 전달된 것이 확인됨

    jsp에서 Model에서 받아온 값을 출력하는 건 아래와 같음

    ${"Controller의 Model객체에서 설정한 변수명을 입력"}

    반응형