Пользовательские атрибуты тегов HTML не отображаются JSF
Я хочу добавить некоторые атрибуты тегов iOS в мою форму входа. Если я посмотрю на источник моей веб-страницы, атрибутов автозамены, автокапитализации и проверки орфографии там нет. В чем причина этого? Я использую JSF 2.x.
<h:inputText id="user-name" forceId="true" value="#{login.username}" style="width:120px;"
autocorrect="off" autocapitalize="off" spellcheck="false" />
1 ответов
это дизайн. Вы можете указать только атрибуты, которые являются поддерживает самим компонентом 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.
-
создать пользовательский рендерер. Вы можете найти несколько конкретных примеров в ответах ниже: