JSF 2中的纯HTML 5标记支持

Mog*_*ana 5 jsf html5

我想在我的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>.

现在我的问题是:

  1. 当我尝试在我的JSF页面中使用类型为"text"的纯html输入标记时,我无法从我的Managed Bean中检索该值并将其设置为此文本框.为什么价值不显示?

  2. xhtml页面中仅支持一些纯HTML 5标记,或者支持所有纯HTML 5标记

lef*_*loh 11

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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

JSF知道有一个相应的UIComponent,并将这个HTML-Tag转换为ah:inputText.如果没有相应的UIComponent JSF将创建一个支持ajax的特殊组件.

另请参阅:JSF 2.2:HTML5友好标记