2017-07-13 63 views
1

我正在使用thymeleaf和spring-boot來解析實體。關於if語句的JQuery AND OR運算符

我想一個布爾字段的值更改爲類似「是」或「否」,但因爲它的簡單,似乎我收到以下錯誤字符串:

12:54:30.046 [XNIO-2 task-17] ERROR o.t.templateparser.ErrorHandler - [THYMELEAF][XNIO-2 task-17] Fatal error during parsing org.xml.sax.SAXParseException: The entity name must go inmediately after the '&' in the entity reference.

Exception parsing document: template="scenariosList", line 401 - column 21

這是我最後一次嘗試在javascript:

 var modificat = $("#modificatEscenari").val(); 
     var calculat = $("#calculatEscenari").val(); 

     if(calculat){ 
      $("#calculat").val("Sí"); 
     } 
     else{ 
      $("#calculat").val("No"); 
      $("#calculPendent").val("Sí"); 
     } 

     if(modificat){ 
      $("#calculPendent").val("Sí"); 
     } 

     if(!modificat && calculat){ 
      $('#calculPendent').val("No"); 
     } 

誰能告訴我是什麼在此代碼是錯的,如果(modificat & & CALCULAT!){?我已閱讀if語句中的運算符的用法,對我來說看起來很好。

編輯

它裹得像個

<script> 
    $(document).ready(function() { 
    .... 
    doing my stuff and the piece of code that trigger the exception 
    </script> 

謝謝。

+0

這是發現的JavaScript,我想Thymeleaf使用''&&達到自己的目的。 – Barmar

回答

2

該異常清楚地表明您將JavaScript代碼嵌入到XML文檔中。自然,&&失敗,因爲&表示編號或命名字符實體的開始(如&nbsp;&#1234;)。

可能的解決方案:

  1. 在XML不嵌入JavaScript代碼。使用您從XML中引用的單獨的JavaScript文件。 (如果我是你,這將是我會做的。)

  2. 將其標記在CDATA部分。 This question's answers談談如何做到這一點,例如this one說,這應該是:

    <script xmlns="http://www.w3.org/1999/xhtml"><![CDATA[ 
    // Your code here 
    ]]></script> 
    
  3. 費力確保JavaScript代碼的文本是有效的XML文本,這將是A)痛苦,和b)維修惡夢。但是,例如,&&運營商將不得不寫爲&amp;&amp;

+0

謝謝@ T.J Crowder,你的第一選擇工作。 –

-1

相關:The entity name must immediately follow the '&' in the entity reference

總結:該&字符是由內而外Thymeleaf XML解析器使用特殊字符。 使用&amp;代替&字符。

你行應該是這樣的:

if(!modificat &amp;&amp; calculat){ 
+0

這實際上會導致由';'引起的語法錯誤,在&amp; –

+1

@ JM.Palomo:不應該,';'是命名字符實體的一部分。 XML文本'if(!modificat & & calculat){',當由解析器讀取時,'if(!modificat && calculat){'當它被提供給JavaScript引擎時它工作得很好。 –