16 xhtml jsf html5 netbeans facelets
在阅读了JSF 2.2中的HTML5支持之后,我很惊讶地发现与在Netbeans中使用新的Web应用程序创建的模板文件中的先前Facelets版本相同的XHTML文档类型.唯一的区别是HTML标记在JSF 2.2中读取:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html">
Run Code Online (Sandbox Code Playgroud)
,而不是在较旧的JSF版本中如下:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
Run Code Online (Sandbox Code Playgroud)
使用XHTML并考虑到HTML5的承诺似乎有点不对劲.如果我从"已注册的库"而不是"服务器库"中选择它,我只能选择使用2.2.这是否会影响框架版本应用于项目的方式?
Facelets是否过分依赖XHTML来支持HTML5?
Bal*_*usC 35
似乎你误解了XHTML的目的,就像许多人在几年前的XHTML过度使用过程中一样.长话短说:查看我们的XHTML维基页面.仔细阅读.简而言之,Facelets绝对不关心生成的HTML输出中使用的doctype.您可以在Facelets模板中完美地声明HTML5 doctype.
毫无疑问,Netbeans默认使用XHTML doctype准备文档,而HTML5现在是推荐的doctype.我不做Netbeans,但在Eclipse中你可以轻松编辑这些模板甚至创建自己的模板.您只需用HTML5替换整个XHTML文档类型即可.您可以通过Web首页中的Web»HTML文件»编辑器»模板查找/创建这些模板.
请注意,JSF 2.2中的HTML5支持与能够专门支持HTML5 doctype无关.相反,即使在使用旧版JSP时,所有JSF版本都支持此功能.JSP和Facelets是一种视图技术,它允许您生成HTML输出,这可以很好地成为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" />
Run Code Online (Sandbox Code Playgroud)
这将最终由<h:inputText>不受支持的属性autocorrect实际包含在生成的HTML输出中.请注意,我用的XML命名空间前缀a("属性"),而不是p在如图所示的Java EE的教程,因为否则将默认XML命名空间的前缀冲突pPrimeFaces的.
将自定义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>
Run Code Online (Sandbox Code Playgroud)
这些将在幕后变成UIPanel(如同<h:panelGroup>).是的,它们在例如中是可参考的<f:ajax render>.
换句话说,"HTML5支持"再次成为"自定义属性支持"的另一个流行语.