본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : 변수 - SpringEL

by 오주현 2022. 2. 4.
반응형

타임리프에서 변수를 사용할 때는 변수 표현식을 사용하는데 이 표현식에는 SpringEL이라는 스프링이 제공하는 표현식을 사용할 수 있다.

 

변수 표현식은 ${,,,}이런 것을 말 한다.

 

@Data
static class User {
    private String username;
    public int age;

    public User(String username, int age) {
        this.username = username;
        this.age = age;
    }
}

클래스를 따로 만들어 username, age를 파라미터로 갖는 생성자를 하나 만들어 주고 @Data 어노테이션을 사용해 주었다.

 

User userA = new User("UserA", 10);
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);
model.addAttribute("users", list);
model.addAttribute("userMap", map);

list와 map, model에 값을 넣어줬다.

 

<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>

<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>

<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>

html에서 각 값을 출력해 주었는데 여러 방법으로 데이터를 출력할 수 있다.

 

두번째 방법 ${user['username']} 같은 경우에는 문자를 넣어 사용할 수 있어 동적 페이지를 만들 때 유리하다고 한다.

이 외에 지역변수 선언에 대해서도 공부했다.

 

<div th:with="first=${users[0]}">
 <p>처음 사람의 이름은 <span th:text="${first.username}"></span></p>

첫 라인에서 first에 user[0]리스트에 있는 값을 담아줬다. 이러면 first가 유저 객체가 되고 아래서 그대로 불러서 사용할 수 있게 되는 것이다.


스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.

반응형

댓글