JSF不会呈现自定义HTML标记属性

JSF不会呈现自定义HTML标记属性,html,jsf,custom-attributes,renderer,Html,Jsf,Custom Attributes,Renderer,我想在我的登录表单中添加一些特定于iOS的标记属性。如果我查看一下我的网页源代码,属性autocorrect、autocapitalize和拼写检查就不存在了。这是什么原因?我正在使用JSF2.x <h:inputText id="user-name" forceId="true" value="#{login.username}" style="width:120px;" autocorrect="off" autocapitalize="off" spellcheck="fal

我想在我的登录表单中添加一些特定于iOS的标记属性。如果我查看一下我的网页源代码,属性autocorrect、autocapitalize和拼写检查就不存在了。这是什么原因?我正在使用JSF2.x

<h:inputText id="user-name" forceId="true" value="#{login.username}" style="width:120px;"
    autocorrect="off" autocapitalize="off" spellcheck="false" />

这是设计的。您只能指定由JSF组件本身指定的属性(即,它在中的属性列表中列出)。您不能指定任意附加属性,它们都将被完全忽略

有几种方法可以解决此问题:

  • 如果您已经使用JSF 2.2+,只需将其指定为:

    
    ...
    
    (请注意,我使用的是
    xmlns:a
    而不是
    xmlns:p
    ,以避免与PrimeFaces默认名称空间冲突)

    或:

    
    ...
    

  • 创建自定义渲染器。您可以在以下答案中找到几个具体示例:


  • 只要我使用
    http://xmlns.jcp.org/jsf/passthrough
    而不是旧的java.sun.com名称空间。@Joost:这是旧版本Mojarra中的一个bug。但是你是对的,我应该提倡新的名称空间。答案已经更新。你知道他们为什么这样设计吗?@BalusC自OmniFaces 2以来,Html5RenderKit就被弃用了。这就是指向showcase的链接不再工作的原因吗?它可能会被@BalusC-Hi替换,出于某些原因,我们一直使用JSF2.0,我相信它不支持passThroughAttributes。有没有办法在JSF2.0中拥有html5属性?