2014-05-12 21 views
4

我想在我的JSF页面中使用纯HTML 5,因为某些UI功能无法通过JSF2提供的HTML支持来实现。JSF 2中的纯HTML 5标记支持


在JSF 2.0中,HTML 5表单元素的某些属性无法在标准JSF输入组件中正确呈现。

例如,<input type="email"无法通过<h:inputText type="email"呈现。

在下面给出link,他们已经使用了一些纯HTML 5个标签,如<canvas> <header> <footer> <small>

现在我的问题是:

  1. 当我尝试使用同类型的纯HTML的输入标签“我的JSF页面中的文本”,我无法从我的托管Bean中检索值并将其设置为该文本框。为什么值不显示?只有

  2. 一些普通的HTML 5点的标签将在XHTML页面的支持或所有普通的HTML 5点的标签将被支持

回答

9

HTML5支持是added in JSF2.2。从那时起,你可以添加直通属性到JSF组件:这是不知道会被JSF(2.0和2.2)被忽略

<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> 

属性。如果您需要使用JSF2.0呈现HTML5属性,则可以使用Omnifaces HTML5 Renderkit

纯粹的HTML标签只是纯粹的HTML标签。他们不是JSF组件。所以它们会被渲染到视图中,但JSF不会关心它们,并且不会更新您的模型。

JSF2.2也来了Passthrough Elements。现在,可以把一个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知道有一个corresponding UIComponent,将这个HTML的标签转换为H:inputText的。如果没有相应的UIComponent,JSF将创建一个支持ajax的特殊项。

另请参阅:JSF 2.2: HTML5 friendly markup