타임리프를 자바스크립트 내에서 사용할 수 있게 해주고, 손쉽게 사용할 수 있도록 처리를 해주는 기능이다. <script th:inline="javascript">
태그를 작성하여 사용할 수 있다.
Model Attribute에 user란 이름으로 new User("침착맨", 42); 인 객체를 넘겨 보냈다고 가정하고 아래 설명을 진행하도록 하겠다.
<script>
var username = [[${user.username}]];
var age = [[${user.age}]];
var username2 = /*[[${user.username}]]*/ "test username";
var user = [[${user}]];
</script>
<script>
var username = 침착맨;
var age = 42;
var username2 = /*침착맨*/ "test username";
var user = BasicController.User(username=침착맨, age=42);
</script>
console.log
혹은 alert
로 확인해보면 "test username"이 출력된다.th:inline="javascript"
를 사용하면 손쉽게 해결된다.<script th:inline="javascript">
var username = [[${user.username}]];
var age = [[${user.age}]];
var username2 = /*[[${user.username}]]*/ "test username";
var user = [[${user}]];
</script>
<script>
var username = "침착맨";
var age = 42;
var username2 = "침착맨";
var user = {
"username":"침착맨",
"age":"42"
}
</script>
타임리프는 자바스크립트 인라인에서 반복문을 사용할 수 있도록 th:each
를 지원한다. 다만, 기존 html 태그에 사용한 것과 다르게 [# th:each= ]
를 활용한다.
<script th:inline="javascript">
[# th:each="user, stat : ${users}"]
var user[[${stat.count}]] = [[${user}]];
[/]
</script>
<script>
var user1 = {"username":"userA","age":10};
var user2 = {"username":"userB","age":20};
var user3 = {"username":"userC","age":30};
</script>
💡 SSR을 활용하다 보면 javascript에 반복문을 사용해야할 일이 꽤나 생기는데, 이때는 Thymeleaf의 인라인과 each를 활용하자!