我想在我的JSF页面中使用纯HTML 5,因为JSF2提供的HTML支持无法实现某些UI功能.
在JSF 2.0中,HTML 5表单元素的某些属性无法在标准JSF输入组件中正确呈现.
例如,< input type =“email”不能由< h:inputText type =“email”呈现. 在下面给出的link中,他们使用了一些纯HTML 5标签,例如< canvas> <报头GT; <页脚> <小>等等
现在我的问题是:
>当我尝试在我的JSF页面中使用类型为“text”的纯html输入标记时,我无法从我的Managed Bean中检索该值并将其设置为此文本框.为什么价值没有显示?
> xhtml页面中仅支持一些纯HTML 5标记,或者支持所有纯HTML 5标记
解决方法
HTML5支持是
added in JSF2.2.从那时起,您可以向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将不关心它们,也不会更新您的模型.
JSF2.2也带有Passthrough Elements.现在可以将HTML-Tag转换为JSF-Component:
<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知道有一个corresponding UIComponent并将此HTML-Tag转换为h:inputText.如果没有相应的UIComponent,JSF将创建一个支持ajax的特殊组件.