自定义HTML标记属性不是由JSF呈现的
我想添加一些iOS特定的标签属性到我的login表单。 如果我看看我的网页源代码,autocorrect,autocapitalize和拼写检查的属性不存在。 这是什么原因? 我正在使用JSF 2.x.
<h:inputText id="user-name" forceId="true" value="#{login.username}" style="width:120px;" autocorrect="off" autocapitalize="off" spellcheck="false" />
这是devise。 您只能指定JSF组件本身支持的属性(即,它在标记文档的属性列表中列出)。 你不能指定任意的附加属性,它们将被全部忽略。
有几种方法可以解决这个问题:
-
如果您已经使用JSF 2.2+,只需将其指定为passthrough属性 :
<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough"> ... <h:inputText ... a:autocorrect="off" />
(请注意,我使用
xmlns:a
而不是xmlns:p
来避免与PrimeFaces默认命名空间发生冲突)要么:
<html ... xmlns:f="http://xmlns.jcp.org/jsf/core"> ... <h:inputText ...> <f:passThroughAttribute name="autocorrect" value="off" /> </h:inputText>
-
使用OmniFaces
Html5RenderKit
。 自1.5版本以来,它支持通过<context-param>
指定自定义属性。 另请参阅展示示例或Javadoc 。
-
创build一个自定义的渲染器。 你可以在下面的答案中find几个具体的例子:
- 如何让JSF通过HTML属性
- 在JSF2 h:inputText组件中使用引导相关标签
- 如何呈现<h:outputLink>的自定义属性?
- InputText PrimeFace不应用maxlength
- 将自定义属性添加到JSF中的Primefaces自动完成组件