问题是:是否可以使用Facelets渲染HTML 4/5文档?如果是,如何?
解决方法
另一方面,HTML5允许XML标记。这在chapter 3.2.2 – Elements中指定:
Example:
06000
Authors may optionally choose to use this same Syntax for void elements in the HTML Syntax as well. Some authors also choose to include whitespace before the slash,however this is not necessary. (Using whitespace in that fashion is a convention inherited from the compatibility guidelines in XHTML 1.0,Appendix C.)
我自己使用<!DOCTYPE html>一路上,也用JSF / Facelets,甚至没有<?xml?>声明在页面的顶部。它在所有浏览器中工作完美。使用XHTML doctype,你应该按照规范使用应用程序/ xhtml xml的内容类型,这将只使MSIE窒息(它不明白它)。因为它仍然是最广泛使用的浏览器之一…通过text / html替换XHTML内容类型是considered harmful,你也不想这样做。
根据你的参数:
HTML 5 do not support namespaces.
这没关系。命名空间只对基于XML的服务器端视图技术(如Facelets)感兴趣,而后者又可以使用这些标签生成纯HTML。以下示例对Facelets合法有效:
<!DOCTYPE html> <html lang="en" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:h="http://xmlns.jcp.org/jsf/html"> <h:head> <title>Title</title> </h:head> <h:body> <h:outputText value="#{bean.text}" /> </h:body> </html>
这使得合法有效的HTML5(对于客户端):
<!DOCTYPE html> <html lang="en"> <head> <title>Title</title> </head> <body> Some text </body> </html>
你看,Facelets已经删除了XHTML声明,因为它们在客户端没有意义。
和,
Also HTML 5 has some new elements that are not available in XHTML
这也没有意义。它是关于生成的输出。哪个可以是HTML5好。你唯一的问题可能是浏览器支持和第三方JSF组件的可用性,它渲染HTML5特定的元素。自JSF 2.2以来,可以使用新的passthrough elements功能将自定义元素转换为JSF组件。只需给HTML5元素一个jsf:id属性。它将被透明地内部解释为JSF组件树中的UIPanel实例(如< h:panelGroup>)。
<!DOCTYPE html> <html lang="en" xmlns:jsf="http://xmlns.jcp.org/jsf" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:h="http://xmlns.jcp.org/jsf/html" > <h:head> <title>Title</title> </h:head> <h:body> <header jsf:id="header">Header</header> <nav jsf:id="nav">Nav</nav> <main jsf:id="main">Main</main> <footer jsf:id="footer">Footer</footer> </h:body> </html>
你甚至可以从ajax中引用它,如< f:ajax render =“main”> ;. 实际上,XHTML是overhyped。其唯一的目的是使用基于XML的工具来简化HTML开发,这些工具可以在服务器端操作/转换/生成HTML页面(如Facelets)。但有些初学者也使用它,而不使用任何XML工具,并将其原样输出,因为它是“那么酷”,因为一些不清楚的原因。 不要误会我。 XHTML是伟大的服务器端视图技术。但只是不作为客户端标记技术。它在客户端完全没有价值。 也可以看看:
> Our XHTML wiki page
> How should a <!DOCTYPE> section look in JSF? HTML5 or XHTML?
> JavaServer Faces 2.2 and HTML5 support,why is XHTML still being used