티스토리 뷰
Model
스프링에서 모델 객체는 컨트롤러에서 생성된 데이터를 담아 View로 전달할 때 사용하는 객체이다.
Model 객체를 model이라고 하면 model.addAttribute("key", "value") 형태의 메소드를 이용해 view에 데이터를 전달한다.
@GetMapping("/{itemId}")
public String item(@PathVariable long itemId, Model model) {
Item item = itemRepository.findById(itemId);
model.addAttribute("item", item);
return "form/item";
}
@ModelAttribute
등록, 조회, 수정 폼에서 모두 공통된 데이터를 보여주어야 하는 경우에 어노테이션을 사용하지 않으면 해당 함수 내에서 같은 코드를 반복적으로 작성해야한다. 즉 각각의 컨트롤러에서 model.addAttribute(...)을 사용해서 구성하는 데이터를 반복해서 넣어주어야 한다.
@ModelAttribute 는 이렇게 컨트롤러에 있는 별도의 메서드에 적용할 수 있다.
ModelAttribute는 전달받은 파라미터를 Model 객체에 담아서 전달하도록 할 때 필요한 어노테이션이다. 해당 컨트롤러를 요청하게 되면 자동으로 Model 객체에 데이터가 담겨진다. 이렇게하면 해당 컨트롤러를 요청할 때 regions 에서 반환한 값이 자동으로 모델( model )에 담기게 된다. 물론 이렇게 사용하지 않고, 각각의 컨트롤러 메서드에서 모델에 직접 데이터를 담아서 처리해도 된다.
// 컨트롤러가 호출되면 자동으로 Model 객체에 담긴다
@ModelAttribute("regions")
public Map<String, String> regions(){
Map<String, String> regions = new LinkedHashMap<>();
regions.put("SEOUL", "서울");
regions.put("BUSAN", "부산");
regions.put("JEJU", "제주");
return regions;
}
View를 보여주는 코드, 어노테이션 ( ) 내부에 있는 값을 통해서 데이터들을 호출할 수 있다
<div>
<div>등록 지역</div>
<div th:each="region : ${regions}" class="form-check form-check-inline">
<input type="checkbox" th:field="*{regions}" th:value="${region.key}"
class="form-check-input">
<label th:for="${#ids.prev('regions')}"
th:text="${region.value}" class="form-check-label">서울</label>
</div>
</div>
'Spring' 카테고리의 다른 글
[Spring] 쿠키와 세션을 이용한 간단한 로그인/로그아웃 (0) | 2022.03.29 |
---|---|
[Spring] Bean Validation / @Valid, @Validated (0) | 2022.03.25 |
[Spring] FrontController를 활용한 MVC 패턴 전개 - (2) (0) | 2022.02.09 |
[Spring] FrontController를 활용한 MVC 패턴 전개 - (1) (0) | 2022.02.05 |
[Spring] 스프링 MVC 패턴 (Model-View-Controller) (0) | 2022.02.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ZNS
- dm-zoned 코드분석
- 알림기능개선기
- java
- 환경 별 로깅 전략 분리
- 5주차 회고
- 팀프로젝트
- ZNS SSD
- 우테코 회고
- 스프링 부트
- 회고
- 피움
- 파이썬
- 프로젝트
- 백준
- 스프링 Logback
- 2차 데모데이
- 우테코
- 8주차 회고
- 3차 데모데이
- CI/CD
- 스프링MVC
- 런칭 페스티벌
- 알림개선기
- 스프링 프레임워크
- Spring
- dm-zoned
- 피움 6주차 회고
- jpa
- 네트워크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함