@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 |