2016-12-27 8 views
1

Я переношу проект с JSP на Thymeleaf.Thymeleaf forEach loop в JavaScript

В некоторых JSPs я сделал модные вещи, как это:

<script type="text/javascript"> 
    //<c:forEach items="${pages}" var="page"> 

    ... 
    var l = new google.maps.LatLng("${page.lat}", "${page.long}"); 
    ... 

    //</c:forEach> 
</script> 

Как я мог бы сделать то же самое с Thymeleaf?

ответ

2

Это рабочий раствор с Thymeleaf 3.0.2:

<script th:inline="javascript"> 
/*<![CDATA[*/ 

    /*[# th:each="page : ${pages}"]*/ 
     ... 
     var l = new google.maps.LatLng(/*[[${page.lat}]]*/, /*[[${page.long}]]*/); 
     ... 
    /*[/]*/ 

/*]]>*/ 
</script> 

Почему это работает, объясняется здесь: [MAJOR FEAT] New syntax for textual template modes #395

0

Вы можете выписать атрибут

<span id="myvar" th:text="${attributeName}"></span>

Тогда вы можете получить доступ к нему с JS, как:

document.getElementById("myvar") или jquery $('#myvar').text()

Thymeleaf код работает на стороне сервера и JS кода на стороне клиента. Мне интересно, как jsp получил этот персонал без каких-либо трюков.

+0

Спасибо за ваш намек, хотя я не уверен, что он будет работать, так как я хотите сгенерировать JavaScript, а не html. Я попробую сегодня вечером. О вашем замечании относительно JSP: Вы сами дали объяснение. Он работает, потому что JSP-движок обрабатывает страницу на сервере и генерирует JavaScript внутри страницы, которую отправляет браузер. Страница в действии находится здесь https://www.tessyglodt.lu/kaart, а исходный код здесь https://github.com/yglodt/tessyglodt.lu/blob/master/src/main/webapp/WEB-INF/ JSP/map.jsp – yglodt