@Data
static class User{
private String username;
private int age;
public User(String username, int age){
this.username = username;
this.age = age;
}
}
@GetMapping("/variable")
public String variable(Model model){
User user1 = new User("userA", 23);
User user2 = new User("userB", 24);
List<User> users = new ArrayList<User>();
users.add(user1);
users.add(user2);
Map<String, User> map = new HashMap<>();
map.put("userA", user1);
map.put("userB", user2);
model.addAttribute("user",user1);
model.addAttribute("users",users);
model.addAttribute("userMap",map);
return "basic/variable";
}
User를 생성하고, 그대로 모델에 넣거나, 리스트에 넣은 다음에 넣거나, Map에 넣은 다음에 넣거나.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>SpringEL 표현식</h1>
<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>
</body>
</html>
user, users, userMap은 key 이름임. 위 자바코드 보면 직접 넣음.
user.username 이거는 프로퍼티 접근법으로, 사실 상 user.getUsername()을 호출하는거임.
두번째도 마찬가지고,
세번째는 직접적으로 함수 쓰는거임.
리스트는
key[idx] 이렇게
맵은
key['key'] 이렇게. 첫번째 키는 모델에 넣을 때 키고, 두번째 키는 이 맵에 넣을 때 키임.
<h1>지역변수 - (th:with)</h1>
<div th:with="first=${users[0]}">
<p>처음 사람의 이름은 <span th:text="${first.username}"></span></p>
</div>
이렇게 잠깐 지역변수로 지정해서 쓸 수 도 있음.
th:with="변수이름=${데이터(모델에 담은 키)}"
참고로 저 th기술들의 스코프는 그 태그 안쪽임.
'스프링 > 4. 스프링 MVC-2' 카테고리의 다른 글
6. thymeleaf 리터럴 (0) | 2023.08.22 |
---|---|
5. thymeleaf url (0) | 2023.08.21 |
4. 유틸 객체, 시간표현 (0) | 2023.08.21 |
3. thymeleaf 기본 제공되는 객체 (0) | 2023.08.21 |
1. 타임리프 text escaped, unescaped (0) | 2023.08.16 |