首页 > 解决方案 > 在 thymeleaf 中使用 '&&' 运算符进行角度验证

问题描述

我有点不知道为什么百里香不接受少数情况。

我在我的 html 页面中有这个验证:

<input id="republish" type="submit" class="btn btn-success"
       ng-click="doRepublish()" value="Republish" disabled="disabled"
       ng-disabled="!republishInput && republishInput.length < 7"/>

每当有 '&&' 时,thmeleaf 都会抛出这个异常:

org.xml.sax.SAXParseException:实体名称必须紧跟在实体引用中的“&”之后。

我已经检查了这个github 帖子

Thymeleaf 2.1 使用 XML 解析器来处理您的模板(v3.0 使用 HTML 解析器,这不会发生)。所以XML解析器不知道你的内容<script>应该被处理为 CDATA(即忽略)并发现你&&的确实是无效的HTML(它认为它是一个转义码)。

解决方案是用 包装您的 JavaScript 代码<![CDATA[...]]>,例如:

<script>
// <![CDATA[
   ...your code here
// ]]>
</script>

这样,您将CDATA明确该部分,并且 XML 解析器将理解它不必担心该块内的内容。

但这似乎是针对 xml 的。我怎么能与我的合作ng-disabled

标签: angularjsthymeleaf

解决方案


我不知道 thymeleaf 但也许你可以尝试在 HTML 中编码特殊值:

<input id="republish" type="submit" class="btn btn-success"
       ng-click="doRepublish()" value="Republish" disabled="disabled"
       ng-disabled="!republishInput &amp;&amp; republishInput.length &lt; 7"/>

尽管我建议通过调用控制器中定义的函数来替换它,例如:

<input id="republish" type="submit" class="btn btn-success"
       ng-click="doRepublish()" value="Republish" disabled="disabled"
       ng-disabled="!canRepublish(7)"/>

推荐阅读