一尘不染

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

html

我想在我的登录表单中添加一些iOS特定的标签属性。如果我查看网页源代码,则不存在自动更正,自动大写和拼写检查这些属性。这是什么原因呢?我正在使用JSF2.x。

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

阅读 290

收藏
2020-05-10

共1个答案

一尘不染

这是设计使然。您只能指定JSF组件本身支持的属性(即,它在标签文档的属性列表中列出)。您不能指定任意其他属性,所有这些属性都会被忽略。

有几种解决方法:

  1. 如果您已经在使用JSF 2.2+,只需将其指定为passthrough属性
    <html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
    


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

要么:

    <html ... xmlns:f="http://xmlns.jcp.org/jsf/core">
...
<h:inputText ...>
    <f:passThroughAttribute name="autocorrect" value="off" />
</h:inputText>

  1. 使用OmniFaces Html5RenderKit。从1.5版本开始,它支持通过来指定自定义属性<context-param>。另请参见展示示例Javadoc

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

2020-05-10