2015-04-09 18 views
8

Ten błąd występuje, gdy próbuję wstawić < lub > operatorów w javascript thymeleaf.Większy niż> Mniejszy niż <w tym samym haśle javascript ... Błąd: Treść elementów musi składać się z dobrze utworzonych danych znakowych lub znacznika

Mój kod

<script th:inline="javascript"> 
    $(document).ready(function() { 
     ... 
     if(timeRemain < 0){ 
      ... 
     } 
     ... 
     var result = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds); 
     ...   
    }); 
</script> 

Komunikat o błędzie

org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.

Jak mogę rozwiązać ten problem?

+2

Dobrze jest zapytać i odpowiedzieć na swoje pytanie w ogóle, ale kiedy informacje, które podajesz, są [tam, bardzo wyraźnie (nie zdalnie ukrywane) w dokumentacji] (http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#script-inlining- javascript-and-dart), nie ma sensu posiadanie pytania/odpowiedzi na SO. –

+2

Cóż, mimo że wspomniałeś, że nie ma celu, to pytanie wyświetliło ponad 1 tys. Wyświetleń z kilkoma kciukami w górę. Cieszę się z tego, ponieważ ten post pomaga programistom w jakiś sposób. –

Odpowiedz

20

Ten problem jest rozwiązany przez dodanie CDATA do znacznika script jak poniżej

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

Oprócz korzystania CDATA można również zakodować < as &lt; i > as &gt;

+1

Dziękuję. Ale po prostu zmęczony i daje ten błąd 'Uncaught SyntaxError: Unexpected token;' w konsoli. –

+0

@FarajFarook: - Czy możesz podzielić się tym, jak próbowałeś? –

+0

Zrobiłem to tak: 'var result = (godziny > 10?" 0 "+ godziny: godziny) ...' bez 'CDATA' –