我想在JSF页面中使用纯HTML 5,因为JSF2提供的HTML支持无法实现某些UI功能。
在JSF 2.0中,HTML 5表单元素的一些属性不能在标准JSF输入组件中正确呈现。
例如,<input type="email"
不能被<h:inputText type="email"
呈现。
在下面给出的链接中,他们使用了一些纯HTML 5标签,如<canvas> <header> <footer> <small>
等。
现在我的问题是:
-
当我尝试在JSF页面中使用类型为"text"的纯html输入标记时,我无法从Managed Bean检索值并将其设置为该文本框。为什么不显示该值?
-
在xhtml页面中只支持一些纯HTML 5标记或支持所有纯HTML 5标记
在JSF2.2中添加了HTML5支持。此后,您可以向JSF-Components添加直通属性:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://java.sun.com/jsf/passthrough">
<h:form>
<h:inputText p:type="email" />
</h:form>
</html>
未知的属性将被JSF(2.0和2.2)忽略。如果你需要在JSF2.0中渲染HTML5- attributes,你可以使用Omnifaces HTML5 Renderkit。
纯html标签就是纯html标签。它们不是JSF组件。所以它们会被呈现给视图,但是JSF不会关心它们,也不会更新你的Model。
JSF2.2还提供了透传元素。现在可以将html标签转换为jsf组件:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:jsf="http://java.sun.com/jsf"
xmlns:f="http://java.sun.com/jsf/core">
<input jsf:id="foo" type="text" jsf:value="#{bean.bar}">
</html>
JSF知道有一个对应的ui组件,并将这个html标签转换为h:inputText。如果没有相应的ui组件,JSF将创建一个支持ajax的特殊ui组件。
参见:JSF 2.2: HTML5友好标记