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 |