본문으로 바로가기

[Spring MVC] @ModelAttribute 와 Model

category Spring/SpringMVC 2019. 8. 23. 23:17

@ModelAttribute

: @ModelAttribute는 이전 포스팅에서 메소드의 아규먼트로 사용해서 파라미터들을 객체로 받을수 있었습니다.

 

<다른 사용법>

:@Controller 또는 @ControllerAdvice 를 사용한 클래스에서 모델 정보를 초기화 할때 사용합니다.

:@RequsetMapping과 같이 사용하면 해당 메소드에서 리턴하는 객체를 모델에 넣어준다.

 => 객체를 리턴하면 어떤 페이지를 호출하게 되나?

 => 메소드 url과 같은 페이지를 default로 호출하게 된다. ( RequestToViewName Translator ) 

 => @RequsetMapping 생략 가능

 

package com.example.demo;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttribute;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

@Controller
@SessionAttributes("event")
public class EventController {

	@ModelAttribute
	public void categories(Model model) {
		model.addAttribute("subjects",List.of("study","seminar","hobby"));
	}
	
	@GetMapping("/event/test")
	@ResponseBody
	public String test(Model model) {
		List test = (List) model.asMap().get("subjects");
		return "model test:"  + test.get(0);
	}
	
}

@Controller에 모든 요청이 들어올때 기본적으로 Model에 subjects가 저장이 된다.

 

 

'Spring > SpringMVC' 카테고리의 다른 글

[Spring MVC] @ExceptionHandler  (0) 2019.08.24
[Spring MVC] @InitBinder  (0) 2019.08.24
[Spring MVC] 응답 타입 @ResponseBody & ResponseEntity  (0) 2019.08.22
[Spring MVC] MultipartFile  (0) 2019.08.20
[Spring MVC] Flash Attributes  (0) 2019.08.20