首页 > 解决方案 > JSF 2.3 与某些没有结束标记的 HTML5 元素不兼容,如链接

问题描述

我有这个用例,其中 index.xhtml 页面是由 JavaScript 框架创建的。此页面包含以下元素:

<link rel="stylesheet" href="/design/style/sheet/css-effects.css">

该页面以以下 doctype 开头,这是 HTML5 文档的标准:

<!DOCTYPE html>

当此文件随后被 JSF 2.3 解析时,它会生成以下错误:

javax.servlet.ServletException: Error Parsing /index.xhtml: Error Traced[line: 22] The element type "link" must be terminated by the matching end-tag "</link>"

但是,JSF 2.3 声明它与 HTML5 兼容。网上有很多关于它的文章。

然后,当我转到 HTML5 链接元素的定义时,它清楚地指出可以使用上面生成的链接元素,这意味着末尾只有“>”,而不是“/>”或完整的结束标记,如'>':

https://html.spec.whatwg.org/multipage/semantics.html#the-link-element

因此,实际上 JavaScript 会按照标准生成正确的 HTML5 语法。显然 JSF 无法处理正确的 HTML5 语法。它不仅发生在 link 元素上,还发生在 img 等......实际上永远不会有内容的元素上。

所以,我的问题是:JSF 2.3 到底是否与 HTML5 不完全兼容,而只是部分兼容?有没有办法绕过 JSF 的这种行为来拒绝 HTML5 兼容的元素,或者我应该配置一些东西?还是我在这里完全错过了一些重要的东西?

知道这一点对我来说很重要,因为我无法控制 JavaScript 框架如何生成 html 文件。最后,它们的格式正确。

标签: javascripthtmlhyperlinkdoctypejsf-2.3

解决方案


推荐阅读