Thymeleaf 没有为 `<audio>`

问题描述 投票:0回答:0

我在 Thymeleaf 中使用 Spring Boot 3.0.4。在最新的 Thymeleaf 文档中5.5 固定值布尔属性 它说:

HTML 有布尔属性 的概念,没有值的属性和一个的存在意味着值是“真”。在 XHTML 中,这些属性只取 1 个值,即它本身。 …

标准方言包含允许您通过评估条件来设置这些属性的属性,因此如果评估为真,属性将设置为其固定值,如果评估为假,则不会设置属性......

标准方言中存在以下固定值布尔属性:……

th:controls
……

我有 XHTML 源代码,其中包含一个

<audio>
元素:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" lang="en-US">

…

    <audio th:if="${audioUrl}" th:src="${audioUrl}" controls="controls">
      This browser does not support audio.
    </audio>

…

请注意,我为布尔属性使用 XHTML 格式

controls="controls"
。我希望元素呈现为 HTML:

    <audio … controls>
      This browser does not support audio.
    </audio>

而是将其呈现为具有值的属性:

    <audio … controls="controls">
      This browser does not support audio.
    </audio>

如果我这样做:

…
    <audio th:if="${audioUrl}" th:src="${audioUrl}" th:controls="${true}">
      This browser does not support audio.
    </audio>
…

然后 Thymeleaf 仍然渲染:

    <audio … controls="controls">
      This browser does not support audio.
    </audio>

因为 Thymeleaf 正在将

true
转换为
controls="controls"
,看起来 Thymeleaf 正在以 XHTML 模式生成输出。但即使我在我的
spring.thymeleaf.mode: HTML
文件中明确设置
application.yaml
(我认为这是默认设置),Thymeleaf 仍然将
th:controls="${true}"
呈现为
controls="controls"
。 (请注意,我有
spring.thymeleaf.suffix: .xhtml
因为我的输入文件是 XHTML,但我认为这应该没有影响。)

如果我使用

controls
形式,Thymeleaf 似乎应该已经生成了
controls="controls"
而不是
th:controls
。我打开了Issue #956,但我在这里问我是否在某处犯了错误。

html spring-boot thymeleaf xhtml
© www.soinside.com 2019 - 2024. All rights reserved.