正如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。
我已经在三个环境中对此进行了测试:
第一个
第二个
第三个
我的第一个假设是Mojarra的版本2.2,但我也在2.1上测试了相同的结果,似乎我在这里遗漏了一些东西,因为我有一个非常干净的示例/项目。
我已经设法通过实现不同的渲染器来传递这些自定义属性,但是我不太习惯使用Omnifaces,也经过测试将autocomplete
传递给此渲染器最初支持的表单。它工作正常。
注意:我知道在JSF 2.2中我们可以轻松传递HTML5,在我的情况下,应用程序应该有资格使用2.2或2.1。