SpringEL
타임리프에서는 ${...} 라는 변수 표현식을 사용하여 변수를 사용한다 (선택 변수는 *{...} )
이 변수 표현식에는 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' 카테고리의 다른 글
th:switch, th:case 예제 (0) | 2022.02.15 |
---|---|
th:each 예제 (0) | 2022.02.15 |
th:text DTO 활용 예제 (0) | 2022.02.14 |
(Thymeleaf) th:text (0) | 2022.02.14 |