web-dev-qa-db-ja.com

カスタムHTMLタグ属性がJSFによってレンダリングされない

ログインフォームにiOS固有のタグ属性を追加したいのですが。 Webページのソースを確認すると、属性autocorrect、autocapitalize、spellcheckがありません。これの理由は何ですか? JSF 2.xを使用しています。

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

これは仕様によるものです。 JSFコンポーネント自体によって supported である属性のみを指定できます(つまり、属性は tag documentation の属性リストにリストされています)。任意の追加属性を指定することはできません。それらはすべて無視されます。

これを解決するにはいくつかの方法があります。

  1. すでにJSF 2.2以降を使用している場合は、単純に passthrough attribute と指定します。

    <html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
    ...
    <h:inputText ... a:autocorrect="off" />
    

    (PrimeFacesのデフォルト名前空間との衝突を避けるために、xmlns:aではなくxmlns:pを使用していることに注意してください)

    または:

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

  2. OmniFacesHtml5RenderKitを使用します。 1.5リリース以降、<context-param>によるカスタム属性の指定をサポートしています。 ショーケースの例 または Javadoc も参照してください。


  3. カスタムレンダラーを作成します。あなたは以下の答えでいくつかの具体的な例を見つけることができます:

60
BalusC