【问题标题】:JQuery AND OR operators on if statementif语句上的JQuery AND OR运算符
【发布时间】:2017-07-13 11:12:16
【问题描述】:

我正在使用 thymeleaf 和 Spring Boot 来解析实体。

我正在尝试将 boolean 字段值更改为 String,例如“是”或“否”,但看起来很简单,但出现以下错误:

12:54:30.046 [XNIO-2 task-17] 错误 o.t.templateparser.ErrorHandler - [THYMELEAF][XNIO-2 task-17] 解析过程中出现致命错误 org.xml.sax.SAXParseException:实体名称必须立即执行 在实体引用中的“&”之后。

异常解析文档:template="scenariosList",第 401 行 - 第 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");
}

谁能告诉我这段代码有什么问题if (!modificat && calculat) {... 我已经阅读了if 语句中运算符的使用,它看起来不错。

编辑

包裹起来像

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

谢谢。

【问题讨论】:

  • 它找到了 Javascript,我猜 Thymeleaf 使用 &amp;&amp; 为自己的目的。

标签: javascript jquery thymeleaf


【解决方案1】:

该异常清楚地表明您正在将 JavaScript 代码嵌入 XML 文档中。所以很自然,&amp;amp;&amp;amp; 会失败,因为&amp; 表示编号或命名字符实体的开头(如&amp;nbsp;&amp;#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;&amp;amp; 运算符必须写为&amp;amp;&amp;amp;

【讨论】:

    【解决方案2】:

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

    总结一下:& 字符是 Thymeleaf 中 XML 解析器使用的特殊字符。 使用 &amp;amp; 代替 & 字符。

    你的行应该是这样的:

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

    【讨论】:

    • 这实际上会导致由 ';' 引起的语法错误&之后
    • @JM.Palomo:不应该,; 是命名字符实体的一部分。当解析器读取 XML 文本 if(!modificat &amp;amp;&amp;amp; calculat){ 时,它是 if(!modificat &amp;&amp; calculat){,它在提供给 JavaScript 引擎时工作得很好。
    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 2019-02-10
    • 1970-01-01
    • 2017-03-06
    • 2014-05-30
    • 2012-12-19
    • 1970-01-01
    • 2012-11-04
    相关资源
    最近更新 更多