2013-05-21 31 views
24

ログインフォームにいくつかのiOS固有のタグ属性を追加したいとします。ウェブページのソースを見ていると、autocorrect、autocapitalize、およびスペルチェックの属性はありません。これの理由は何ですか?私はJSF 2.xを使用しています。カスタムHTMLタグ属性がJSFによってレンダリングされない

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

答えて

51

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

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

  1. あなたはJSF 2.2以降を開いている場合は、単にpassthrough attributeとして指定:

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

    (私が使用していることに注意してくださいの代わりにxmlns:pを使用して、PrimeFacesのデフォルトネームスペースとの衝突を避ける)

    Or:

    <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>でサポートされています。 showcase exampleまたはJavadocも参照してください。


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

+0

おかげBalusCは - あなたが素晴らしいです! – Jochen

+1

ありがとうBalusC、あなたはJSFのマスターです:)私が必要とするのはあなただけです。 – Simego

+0

これは、私が 'http://xmlns.jcp.org/jsf/passthrough '古いjava.sun.com名前空間ではなく、 – Joost

関連する問題