[Thymeleaf]변수 - SpringEL

·2023년 11월 22일

Thymeleaf

목록 보기
2/4
post-thumbnail

💡변수 - SpringEL

  • 타임리프에서 변수를 사용할 때는 변수 표현식을 사용한다.
    • 변수 표현식 : ${...}
  • 이 변수 표현식에는 스프링 EL이라는 스프링이 제공하는 표현식을 사용할 수 있다.

📗예시

controller

컨트롤러에는 userA와 B의 정보가 Object, List, Map에 각각 저장되고, model객체로 정보를 뷰에 넘긴다.

    @GetMapping("variable")
    public String variable(Model model){
        User userA = new User("userA", 10);
        User userB = new User("userB", 10);

        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);
        model.addAttribute("users", list);
        model.addAttribute("userMap", map);

        return "basic/variable";
    }

Object

<ul>Object
  <li>${user.username} =    <span th:text="${user.username}"></span></li>
  <li>${user['username']} = <span th:text="${user['username']}"></span></li>
  <li>${user.getUsername()} = <span th:text="${user.getUsername()}"></span></li>
</ul>
  • user.name : user의 username을 프로퍼티 접근 -> user.getUsername()
  • user['username'] : 위와 동일 -> user.getUsername()
  • user.getUsername() : user의 getUsername()을 직접 호출

List

<ul>List
  <li>${users[0].username}    = <span th:text="${users[0].username}"></span></li>
  <li>${users[0]['username']} = <span th:text="${users[0]['username']}"></span></li>
  <li>${users[0].getUsername()} = <span th:text="${users[0].getUsername()}"></span></li>
</ul>
  • users[0].username : List에서 첫번째 회원을 찾고 username 프로퍼티 접근 -> list.get(0).getUsername()
  • users[0]['username'] : 위와 동일
  • users[0].getUsername() : List에서 첫번째 회원을 찾고 메서드 직접 호출

Map

<ul>Map
  <li>${userMap['userA'].username} =  <span th:text="${userMap['userA'].username}"></span></li>
  <li>${userMap['userA']['username']} = <span th:text="${userMap['userA']['username']}"></span></li>
  <li>${userMap['userA'].getUsername()} = <span th:text="${userMap['userA'].getUsername()}"></span></li>
</ul>
  • userMap['userA'].username : Map에서 userA를 찾고 username 프로퍼티 접근 -> map.get("userA").getUsername()
  • userMap['userA']['username'] : 위와 동일
  • {userMap['userA'].getUsername() : Map에서 userA를 찾고 메서드 직접 호출

💡지역변수 선언

  • th:with를 사용하면 지역변수를 선언해서 사용할 수 있다
  • 지역변수 이므로 선언한 태그안에서만 사용할 수 있다

📗예시

th:with="변수명=${...}

<h1>지역 변수 - (th:with)</h1>
<div th:with="first=${users[0]}">
  <p>처음 사람의 이름은 <span th:text="${first.username}"></span></p>
</div>
```
profile
배우고 기록하며 성장하는 백엔드 개발자입니다!

0개의 댓글