好像几年前在XHTML宣传过多时一样,您误解了XHTML的目的。长话短说:检查我们的XHTMLWiki页面。仔细阅读。简而言之,Facelets完全不关心生成的HTML输出中使用的doctype。您可以完美地在Facelets模板中声明HTML5文档类型。
确实不幸的是,Netbeans默认情况下使用XHTMLdoctype准备文档,而HTML5如今是推荐的doctype。我不使用Netbeans,但是在Eclipse中,您可以轻松地编辑这些模板,甚至创建自己的模板。您可以将整个XHTML文档类型替换为HTML5文档类型。您可以通过IDE首选项中的_Web»HTML文件»编辑器»模板_ 来查找/创建这些模板。
请注意,JSF
2.2中的HTML5支持与能够专门支持HTML5文档类型无关。相反,即使使用旧版JSP,所有JSF版本都支持此功能。JSP和Facelets是允许您生成HTML输出的视图技术,可以完美地将HTML5用作HTML5。以下紧密相关的答案也对此进行了详细说明:是否可以将JSF+ Facelets与HTML 4/5一起使用?
相反,JSF 2.2中的HTML5支持涵盖了定义自定义JSF组件属性并将自定义HTML元素转换为JSF组件的可能性。在JSF
2.1及更高版本中,这是不可能的。
data-xxx默认JSF渲染器将忽略所有自定义JSF组件属性(包括HTML5推荐的属性)。另请参见以下相关答案:JSF不呈现自定义HTML标记属性。在JSF
2.2中,您可以通过新的
http://xmlns.jcp.org/jsf/passthrough名称空间轻松地指定自定义属性,如下所示:
<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">...<h:inputText ... a:autocorrect="off" />
这最终将由
<h:inputText>不支持的属性
autocorrect最终实际包含在生成的HTML输出中。请注意,我使用XML名称空间前缀
a(“attribute”)而不是Java EE教程中
p所示的那样,否则它将与
pPrimeFaces的默认XML名称空间前缀冲突。
将自定义HTML元素(包括HTML5元素)转换为JSF组件仅需指定
jsf诸如的属性即可
jsf:id。
<html ... xmlns:jsf="http://xmlns.jcp.org/jsf">...<header jsf:id="header">...</header><main jsf:id="main">...</main><footer jsf:id="footer">...</footer>
那些被掩盖的将变成
UIPanel(如
<h:panelGroup>)。是的,它们在例如中是可引用的
<f:ajax render>。
换句话说,“ HTML5支持”再次是“自定义属性支持”的另一个流行词。



