2013-05-03 28 views
9

Có thể là một câu hỏi ngu ngốc nhưng tôi không thể truy xuất thông tin từ Google. Như tiêu đề nói, tôi nhận được một stack trace nếu một cố gắng để phân tích dòng đơn giản này:Lỗi phân tích mẫu thymeleaf với "1 <0"

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

Lỗi này là:

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.

Nhưng nếu tôi cố gắng này:

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

Mọi thứ đều ổn, câu hỏi của tôi là: Tại sao tôi gặp phải lỗi này?

Tôi tin là có liên quan đến việc thiếu kinh nghiệm với Java và thymeleaf, nhưng tôi không hiểu tại sao chỉ thay đổi vị trí của các yếu tố hoạt động như tôi mong đợi (luôn trả về false).

Đó là lỗi trong phân tích biểu thức (khi kiểm tra nếu 1 thấp hơn 0 bị cấm bởi một số quy tắc phân tích cú pháp) hoặc chỉ là một vấn đề phân tích cú pháp XML lạ?

Cảm ơn tất cả những người thậm chí sẽ chỉ đọc.

Trả lời

32

Bạn phải thoát khỏi biểu tượng bằng cách sử dụng

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

Vì vậy, mã của bạn sẽ giống như thế:

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

Bạn có thể tìm thấy toàn bộ doc về điều này trong 'Sử dụng Thymeleaf' hướng dẫn về họ website, trong phần so sánh và bình đẳng.

+0

như vậy là một vấn đề phân tích cú pháp XML? – Matteo

+1

Chính xác, đây là vấn đề phân tích cú pháp. – brnrd

+0

Tôi không hiểu tại sao biểu tượng lớn hơn hoạt động, nhưng tôi đã hiểu tại sao giải pháp thay thế lại ở đó. Cảm ơn bạn đã dành thời gian và sự giúp đỡ của bạn. – Matteo

7
&le; for <= 
&ge; for >= 

không làm việc cho tôi, tôi đã phải sử dụng:

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

Dường như ≤ và ≥ không được chấp nhận XML như well-formed.

này giải quyết của: -

"IllegalStateException: Không thể xử lý (8804) '≤'"

Các vấn đề liên quan