使用Omnifaces直接自定义HTML5属性

时间:2014-07-29 09:01:47

标签: jsf omnifaces

正如documentation中所描述的那样,为了传递自定义HTML5属性,我们必须声明context-parameter org.omnifaces.HTML5_RENDER_KIT_PASSTHROUGH_ATTRIBUTES,将类的完全限定名称作为键传递,值为直接属性的逗号分隔字符串。

我所做的是:

<context-param>
    <param-name>org.omnifaces.HTML5_RENDER_KIT_PASSTHROUGH_ATTRIBUTES</param-name>
    <param-value>
        javax.faces.component.html.HtmlForm=data-parsley-validate; <!-- test also javax.faces.component.UIForm -->
        javax.faces.component.html.HtmlInputText=data-parsley-type;            
    </param-value>
</context-param>

我也注册了render-kit-factory

<factory>
    <render-kit-factory>org.omnifaces.renderkit.Html5RenderKitFactory</render-kit-factory>
</factory>

当然,这一切都进入了faces-config.xml。 不幸的是,我没有运气,我不确定缺少什么。

我在github上创建了一个非常基本的项目,只包含one page,其中包含一个表单和一个inputText。

我已经在三个环境中对此进行了测试:

第一个

  • GlassFish Edition 4.0(build 89) - 我还有一些warnings
  • Mojarra 2.2.0
  • Omnifaces 1.8.1

第二个

  • JBoss Application Server 7.1.1
  • Mojarra 2.1.11
  • Omnifaces 1.8.1

第三个​​

  • jetty 9.1.1
  • Mojarra 2.2.0
  • Omnifaces 1.8.1

我的第一个假设是Mojarra的版本2.2,但我也在2.1上测试了相同的结果,似乎我在这里遗漏了一些东西,因为我有一个非常干净的示例/项目。

我已经设法通过实现不同的渲染器来传递这些自定义属性,但是我不太习惯使用Omnifaces,也经过测试将autocomplete传递给此渲染器最初支持的表单。它工作正常。

注意:我知道在JSF 2.2中我们可以轻松传递HTML5,在我的情况下,应用程序应该有资格使用2.2或2.1。

1 个答案:

答案 0 :(得分:3)

<context-param>属于web.xml,而不属于faces-config.xml

just澄清了javadocs。