Шаблон jQuery или Underscore.js вызвал ошибку парсера XML в thymleaf

В моем HTML-файле есть символ подчеркивания или шаблон jQuery. Это что-то вроде:

<script type="text/template" id="myId">
    <h1><%=catalog.title %></h2>
    <div class="action">
         <% if(isGood) { %>
           we are good
       <% } else { %>
           we are not good
       <% } %>
    </div>
</script>

Это нормально, если я помещу это в файл .jsp или .vm.

Но при использовании ThymeLeaf у меня возникнет проблема с синтаксическим анализом. Я предполагаю, что это вызвано синтаксическим анализатором XML тимелеафа. Это не позволяет что-то вроде "‹% ".

Я не могу использовать CDATA, потому что если я это сделаю, то CDATA будет частью шаблона (используемого библиотекой Underscore.js).

Не могу поменять «‹ »на« & lt; ». Библиотека шаблонов Underscore.js / jQuery этого не поймет.

Любые идеи?


person user3495072    schedule 03.04.2014    source источник


Ответы (3)


Чтобы избежать исключений парсера Thymeleaf, вы можете изменить разделители в стиле ERB на стиль Mustache.js (или любой другой) в соответствии с документация по underscore.js, просто вставив следующий код JavaScript перед любым другим кодом, связанным с Underscore.JS:

_.templateSettings = {
    interpolate: /\{\{(.+?)\}\}/g
};

Пример: вместо

<h1><%=catalog.title %></h2>

ты бы написал

<h1>{{ catalog.title }}</h2>
person Dennis    schedule 24.05.2014

У меня была такая же проблема при использовании шаблонов Handlebars.js (с использованием нотации {{foo}}). Для меня установка Thymeleaf на режим устаревшего шаблона HTML5 сработала (следуя приведенному совету здесь). Мне также пришлось добавить nekohtml в путь к классам.

person John    schedule 28.05.2014

После нескольких недель тщетности я наконец смог отрендерить шаблон Underscore в пределах режима Thymeleaf XHTML, наткнувшись на этот аналогичный вопрос и ответ о Thymeleaf-Ember. Все перестановки тегов CDATA и Thymeleaf у меня не работали, пока я не вставил дополнительный случайный комментарий после тега CDATA, как таковой:

<script type="text/template" id="my-template">
    <![CDATA[
    <!-- guard comment to prevent browsers from considering the previous and next lines as part of a comment -->
    <tr>
        <td><%- myParam%></td>
    </tr>
    <!-- ]]> -->
</script>
person bullcitydave    schedule 30.03.2015