티스토리 뷰
(참고: Spring Boot를 기준으로 작성된 글입니다)
타임리프에서는 ${...} 라는 변수 표현식을 사용하여 변수를 사용한다 (선택 변수는 *{...} )
이 변수 표현식에는 SpringEL이라는 스프링이 제공하는 표현식을 사용할 수가 있다
SpringEL
Spring Expression Language라는 뜻의 SpringEL (SpEL)은 런타임 시 메서드 호출 및 기본 문자열 템플릿 등의 기능을 제공한다
#{"표현식"} , ${"프로퍼티"} 으로 사용한다 (자세한 내용은 추후에 다룰 예정)
(SpringEL 공식문서 링크 : https://docs.spring.io/spring-framework/docs/3.0.x/reference/expressions.html )
Thymeleaf Variable Expression : ${...}
기본적인 표현식은 너무 간단하니 설명은 생략 하겠다
<span th:text="${data}">Text</span>
Thymeleaf Variable with SpEL
SpEL(SpringEL)의 다양한 표현식을 사용할 수 있다
//서버쪽에서 아래와 같이 데이터가 넘어간다
@GetMapping("/variable")
public String variable(Model model) {
User userA = new User("userA", 10); //username , age
User userB = new User("userB", 20);
List<User> list = new ArrayList<>();
list.add(userA);
list.add(userB);
Map<String, User> map = new HashMap<>();
map.put("userA", userA);
map.put("userB", userB);
model.addAttribute("user", userA); // Object(객체)로 전송
model.addAttribute("users", list); // List로 전송
model.addAttribute("userMap", map); // Map으로 전송
return "basic/variable";
}
위와 같이 Object, List, Map으로 온 데이터를 SpringEL의 표현식을 통해 조회할 수 있다
<!-- Obejct -->
<span th:text="${user.username}"></span>
<span th:text="${user['username']}"></span>
<span th:text="${user.getUsername()}"></span>
<!-- List -->
<span th:text="${users[0].username}"></span>
<span th:text="${users[0]['username']}"></span>
<span th:text="${users[0].getUsername()}"></span>
<!-- Map -->
<span th:text="${userMap['userA'].username}"></span>
<span th:text="${userMap['userA']['username']}"></span>
<span th:text="${userMap['userA'].getUsername()}"></span>
• Object
user.username : user의 username 프로퍼티 접근 (=user.getUsername( ))
user['username'] : 첫 번째와 동일한 프로퍼티 접근 (=user.getUsername( ))
user.getUsername(): user의 getUsername() , getter 직접 호출
• List
users[0].username : List의 첫 번째에서 username 프로퍼티 접근 (=list.get(0).getUsername( ))
users[0]['username'] : 첫 번째와 동일한 프로퍼티 접근 (=list.get(0).getUsername( ))
users[0].getUsername : List의 첫 번째에서 getter 직접 호출
• Map
userMap['userA'].username : Map에서 userA라는 key값의 username 프로퍼티 접근 (=map.get("uesrA").getUsername))
userMap['userA']['username'] : 첫 번째와 동일한 프로퍼티 접근 (=map.get("uesrA").getUsername))
userMap['userA'].getUsername() : Map에서 userA라는 key값의 getter 직접 호출
Thymeleaf Select Variable Expression : *{...}
이전의 Context에 포함된 객체를 th:obejct로 선언하여 그 안에 있는 값들을 직접 선택하여 꺼낼 수 있다
<!-- user의 객체에 있는 name 과 age 값을 꺼낼 수 있음 -->
<div th:obejct="${user}">
<span th:text="*{name}">username</span>
<span th:text="*{age}">userage</span>
</div>
Local Variable (지역변수) : th:with
th:with을 사용하여 지역 변수를 선언할 수 있다, 하지만 지역 변수는 선언된 태그 안에서만 사용할 수 있다
<!-- 지역변수의 스코프는 선언된 해당 태그까지만이다 -->
<div th:with="local=${users[0]}">
<span th:text="${local.username}"></span>
</div>
개인 학습을 위해 작성되는 글입니다.
제가 잘못 알고 있는 점에 대한 지적 / 더 나은 방향에 대한 댓글을 환영합니다.
참조 링크:
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html
https://docs.spring.io/spring-framework/docs/3.0.x/reference/expressions.html
https://cyberx.tistory.com/160
'WEB > Template Engine' 카테고리의 다른 글
[Thymeleaf] Utilities (유틸리티) (0) | 2021.09.01 |
---|---|
[Thymeleaf] Basic Objects & Convenience Objects (기본객체 & 편의객체) (0) | 2021.09.01 |
[Thymeleaf] Text & Escape (텍스트 표현 & 이스케이프) (0) | 2021.09.01 |
[Thymeleaf] Thymeleaf란 (0) | 2021.09.01 |
[TEMPLATE-JSP] JSP (Java Server Page)의 이해 (0) | 2021.08.03 |
- Total
- Today
- Yesterday
- DTO와 VO의 차이
- spring
- Spring TypeConverter
- Session
- 캐시
- maenco
- Spring MVC
- 제이쿼리 직접 선택자
- Spring API Error
- 맨코
- 쿠키
- Cache
- application/x-www-form-urlencoded
- 세션
- 제이쿼리 인접 관계 선택자
- cookie
- 제이쿼리 위치탐색선택자
- ResponseStatusExeceptionResolver
- ExceptionHandlerExceptionResolver
- Spring Container
- OOP
- http
- @ExceptionHandlere
- @ResponseStatus
- DefaultHandlerExceptionResolver
- jQuery 직접 선택자
- uri
- 제이쿼리란
- 제이쿼리 기본 선택자
- 제이쿼리 탐색선택자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |