Thymeleaf и встроенные скрипты SAXParseException

У меня есть страница, которая использует шаблон тимелеафа, и я получаю следующую ошибку при загрузке страницы при использовании встроенных скриптов:

org.xml.sax.SAXParseException; номер строки: 270; номер столбца: 85; Содержимое элементов должно состоять из правильно сформированных символьных данных или разметки.

Код в строке 270

<script type="text/javascript" >
    window.jQuery || document.write("<script src='assets/js/jquery-2.0.3.min.js'>"+"<"+"/script>");
</script>

Я попытался заменить символы "‹", ">" из document.write на &lt; &gt;, исключение больше не возникает, но скрипт больше не загружается


person Alexandru Severin    schedule 10.04.2014    source источник


Ответы (1)


Вам нужно добавить теги CDATA для скрипта следующим образом:

<script type="text/javascript">
    //<![CDATA[
     window.jQuery || document.write("<script src='assets/js/jquery-2.0.3.min.js'>"+"<"+"/script>");
    //]]>
</script>

Теги сообщают синтаксическому анализатору xml тимелеафа, что код между ними не должен интерпретироваться как XML-разметка.

В этом больше нет необходимости, начиная с Thymeleaf 3.0

person Alexandru Severin    schedule 10.04.2014
comment
Для получения дополнительной информации [настройки синтаксического анализа механизма шаблонов Thymeleaf] (anwaarlabs.wordpress.com/2017/02/19/) может оказаться полезным. - person Digital Alchemist; 20.02.2017
comment
Оно работает. Потребовалось много времени, чтобы понять это. Спасибо. - person Cristian; 09.03.2017
comment
Да, это работало для 1.5.2! Эта проблема устранена в версии 2.0.0.BUILD-SNAPSHOT. Надеюсь скоро выпустят 2.0. - person Martin Erlic; 11.04.2017
comment
В качестве обновления Thymeleaf 3.x использует AttoParser, и CDATA больше не нужен, если вы не хотите проверять свою разметку на соответствие xml. - person RiZKiT; 02.08.2018