본문 바로가기

SPRING

Model 객체 / @ModelAttribute

Controller의 메서드를 작성할 때 Model이라는 타입을 파라미터로 지정할 수 있다.

 

Model 객체는 JSP에 컨트롤러에서 생성된 데이터를 담아서 전달하는 역할을 한다.

 

메서드의 파라미터에 Model 타입이 지정된 경우에는 스프링이 알아서 Model 객체를 만들어준다.

 

@ModelAttribute 어노테이션에 대해 알아보자.

 

스프링 MVC Controller는 기본적으로 자바 빈 규칙에 맞는 객체는 다시 화면으로 객체를 전달한다.

자바 빈 규칙이란 생성자가 없거나 빈 생성자를 가져야하며 setter/getter를 가진 클래스의 객체를 말한다.

아무튼, 자바 빈 규칙에 의해 생성된 객체는 전달될 때 클래스명의 앞글자가 소문자로 처리되어 화면까지 전달된다.

 

	@GetMapping("/ex04")
	public String ex04(SampleDTO dto, int page) {
		log.info("dto: " + dto);
		log.info("page: " + page);
		return "/sample/ex04";
	}

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>SAMPLEDTO ${sampleDTO}</h2> <!-- 출력됨 -->
	<h2>PAGE ${page}</h2> <!-- 출력되지 않음 -->
</body>
</html>

 

 

반면에 기본 자료형의 경우는 파라미터로 선언하더라도 기본적으로 화면까지 전달되지 않는다.

이럴 때 @ModelAttribute 어노테이션을 사용하여 화면까지 전달할 수 있다.

 

즉, 강제로 전달받은 파라미터를 Model에 담아서 전달하도록 할 때 필요한 어노테이션이다.

타입에 관계없이 무조건 Model에 담아서 전달된다.

 

	@GetMapping("/ex04")
	public String ex04(SampleDTO dto, @ModelAttribute("page") int page) {
		log.info("dto: " + dto);
		log.info("page: " + page);
		return "/sample/ex04";
	}

'SPRING' 카테고리의 다른 글

404 NOT_FOUND 처리하기  (0) 2020.10.11
파일 업로드 처리 : MultipartResolver  (0) 2020.10.11
@RequestParam 어노테이션  (0) 2020.10.11
Lombok / Junit 라이브러리  (0) 2020.10.10
Validator 인터페이스를 이용한 유효성 검증  (0) 2020.10.09