Thymeleaf

SpringEL

쿠카이든 2023. 3. 18. 21:35
728x90
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 직접 호출

 

출처 : https://maenco.tistory.com/entry/Thymeleaf-Variable-Expression-%EB%B3%80%EC%88%98-%ED%91%9C%ED%98%84%EC%8B%9D

 

[Thymeleaf] Variable Expression (변수 표현식)

(참고: Spring Boot를 기준으로 작성된 글입니다) 타임리프에서는 ${...} 라는 변수 표현식을 사용하여 변수를 사용한다 (선택 변수는 *{...} ) 이 변수 표현식에는 SpringEL이라는 스프링이 제공하는 표

maenco.tistory.com

 

728x90

'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