我有一个用例,其中有一个索引。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>"
然而,JSF2.3声明它与HTML5兼容。网上有很多关于它的文章。
当我接着讨论HTML5链接元素的定义时,它清楚地表明链接元素可以按照上面生成的方式使用,这意味着只使用“>”在结尾,而不是使用“/>”或者像“>”这样的完整结束标记:
https://html.spec.whatwg.org/multipage/semantics.html#the-link-element
因此,事实上JavaScript会按照标准生成正确的HTML5语法。显然,JSF无法处理正确的HTML5语法。这不仅发生在链接元素上,也发生在img上,等等。。。事实上永远不会有内容的元素。
所以,我的问题是:JSF2.3最终是否真的与HTML5不完全兼容,而只是部分兼容?有没有办法绕过JSF的这种行为来拒绝与HTML5兼容的元素,或者我应该配置一些东西?还是我完全错过了一些重要的事情?
这对我来说很重要,因为我无法控制JavaScript框架如何生成html文件。最后,它们的格式是正确的。