2017-07-13 27 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引擎时它工作得很好。 –