在JSF 2中支持纯HTML 5标记



我想在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标记

在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友好标记

相关内容

  • 没有找到相关文章

最新更新