Error parsing thymeleaf template with "1 < 0"

Matteo picture Matteo · May 3, 2013 · Viewed 16.6k times · Source

Maybe is a stupid question but I failed to retrieve information from Google. As the title say, I get a stack trace if a try to parse this simple line:

<span th:if="${1 < 0}">

The error is:

org.xml.sax.SAXParseException; lineNumber: 14; columnNumber: 43; The value of attribute "th:if" associated with an element type "null" must not contain the '<' character.

But if i try this:

<span th:if="${0 > 1}">

Everything is fine, my question is: Why I get this error?

I believe is related to my lack of experience with Java and thymeleaf, but I don't get why by just changing the position of the elements it work as I expect (return always false).

It is a bug in the parsing of the expression (as checking if 1 is lower than 0 is forbidden by some parser rule) or is just a weird XML parsing issue?

Thank you to all who will even just read.

Answer

brnrd picture brnrd · May 4, 2013

You have to escape the symbol by using

&lt; for < 
&gt; for >
&le; for <= 
&ge; for >=

So your code should look like :

<span th:if="${1 &lt; 0}">

You can find the whole doc about this in the 'Using Thymeleaf' tutorial on their website, in the comparators-and-equality section.