Thymeleaf и вградени скриптове SAXParseException

Получих страница, която използва шаблон thymeleaf, и получавам следната грешка при зареждане на страницата, когато използвам вградени скриптове:

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 анализатора на thymeleaf, че кодът между не трябва да се интерпретира като XML маркиране.

Това вече не е необходимо след Thymeleaf 3.0

person Alexandru Severin    schedule 10.04.2014
comment
За повече информация [Thymeleaf templating engine tweaks parsing] (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