티스토리 뷰
반응형
(참고: Spring Boot를 기준으로 작성된 글입니다)
타임리프에서 다양한 객체 값들을 바인딩하는 방법들을 정리해보고자 한다
아래와 같이 객체를 생성하였다, 이 객체를 다양한 방식으로 전송하여 타임리프에서 어떻게 꺼내볼 수 있는지 방법별로 살펴보자
@Data
public class UserDTO {
private String name;
private int age;
}
Object (객체)
- 서버
@Controller
public class ExampleController {
@GetMapping("/objects")
public String objBinding(Model model) {
UserDTO userDTO = new UserDTO();
userDTO.setName("userA");
userDTO.setAge(20);
model.addAttribute("userDTO", userDTO);
return "/objects/objExam";
}
}
- 타임리프
<span th:text="${userDTO.name}">username</span>
<span th:text="${userDTO.age}">userage</span>
List<> Object (리스트 객체)
- 서버
@Controller
public class ExampleController {
@GetMapping("/objects/list")
public String objBinding(Model model) {
UserDTO userDTO = new UserDTO();
List<UserDTO> list = new ArrayList<>();
list.add(new UserDTO("userA", 10));
list.add(new UserDTO("userB", 20));
model.addAttribute("userList", list);
return "/objects/listExam";
}
}
- 타임리프
//Spring EL 사용
<span th:text="${list[0].name}"></span>
//반복문 사용
<tr th:each="userList : ${list}">
<td th:text="${userList.name}"></td>
<td th:text="${userList.age}"></td>
</tr>
Map<Key, Value> Object (맵<key,value> 형식 객체)
-서버
@Controller
public class ExampleController {
@GetMapping("/objects/map")
public String objBinding(Model model) {
UserDTO userA = new UserDTO("userA", 10);
UserDTO userB = new UserDTO("userB", 20);
Map<String, UserDTO> map = new HashMap<>();
map.put("userA", userA);
map.put("userB", userB);
model.addAttribute("userMap", map);
return "/objects/mapExam";
}
}
-타임리프
//Spring EL 사용
<span th:text="${userMap['userA'].name}">username</span>
//반복문 사용
<tr th:each="map : ${userMap}">
<td th:text="${map.key}"></td>
<td th:text="${map.value}"></td>
</tr>
Map<Ket, List> Object (맵<key,list> 형식 객체)
-서버
@Controller
public class ExampleController {
@GetMapping("/objects/mapList")
public String objBinding(Model model) {
UserDTO userA = new UserDTO("userA", 10);
UserDTO userB = new UserDTO("userB", 20);
List<UserDTO> listA = new ArrayList<>();
List<UserDTO> listB = new ArrayList<>();
list.add(userA);
list.add(userB);
Map<String, List<UserDTO>> map = new HashMap<>();
map.put("keyA", listA);
map.put("keyB", listB);
model.addAttribute("mapList", map);
return "/objects/mapListExam";
}
}
-타임리프
//반복문 사용
<tr th:each="map : ${mapList}">
<td th:text="${mapStat.count}">mapcount</td>
<td th:text="${map.key}">mapkey</td>
<td>
<tr th:each="list : ${map.value}">
<td th:text="${list.name}">username</td>
<td th:text="${list.age}">userage</td>
</td>
</tr>
더보기
개인 학습을 위해 작성되는 글입니다.
제가 잘못 알고 있는 점에 대한 지적 / 더 나은 방향에 대한 댓글을 환영합니다.
참조 링크:
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard
https://amagrammer91.tistory.com/33
반응형
'WEB > Template Engine' 카테고리의 다른 글
[Thymeleaf] Comments (주석) (0) | 2021.09.02 |
---|---|
[Thymeleaf] Conditional Evaluation (조건부 평가) (0) | 2021.09.01 |
[Thymeleaf] Iteration (반복) (0) | 2021.09.01 |
[Thymeleaf] Attribute (속성) (0) | 2021.09.01 |
[Thymeleaf] Operations (연산) (0) | 2021.09.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- DefaultHandlerExceptionResolver
- @ResponseStatus
- 세션
- 캐시
- @ExceptionHandlere
- 제이쿼리 직접 선택자
- application/x-www-form-urlencoded
- jQuery 직접 선택자
- maenco
- Spring API Error
- Spring TypeConverter
- 제이쿼리 위치탐색선택자
- 제이쿼리 탐색선택자
- ExceptionHandlerExceptionResolver
- Session
- 제이쿼리 인접 관계 선택자
- spring
- OOP
- 제이쿼리란
- 맨코
- Spring Container
- Spring MVC
- uri
- 제이쿼리 기본 선택자
- cookie
- Cache
- DTO와 VO의 차이
- 쿠키
- ResponseStatusExeceptionResolver
- http
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함