✅ 타임리프 특징
✅ 텍스트 - text
, utext
<span th:text="${data}"> // 컨트롤러에서 넘어온 데이터를 타임리프에서 출력하는 방법
[[${data}]] // HTML 태그 속성이 아니라 컨텐츠 영역 안에서 직접 출력하기
웹 브라우저는 < 를 HTML 테그의 시작으로 인식한다. 따라서 < 를 테그의 시작이 아니라 문자로 표현할 수 있는 방법이 필요한데, 이것을 HTML 엔티티라 한다. 그리고 이렇게 HTML에서 사용하는 특수 문자를 HTML 엔티티로 변경하는 것을
이스케이프
(escape)라 한다.
그리고 타임리프가 제공하는th:text
,[[...]]
는 기본적으로 이스케이프 (escape)를 제공
>
=<
;
<
=>
;
즉 컨트롤러에서 데이터를 넘겨줄 때,<b>Spring</b>
자체로 보내주면
이미 이스케이프가 적용된 타임리프는 저 문장 그대로 출력을 해준다
데이터를 보낼때 태그적용을 시킨상태에서 보내고 싶으면utext
를 사용한다<span th:utext="${data}">
✅ 변수 - SpringEL
<ul>Object
<!-- model.addAttribute("user",userA); -->
<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
<!-- model.addAttribute("users",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
<!-- model.addAttribute("userMap",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>