2013-05-21 17 views
24

Ich möchte meinem Login-Formular einige iOS-spezifische Tag-Attribute hinzufügen. Wenn ich auf meine Webseitenquelle schaue, sind die Attribute Autokorrektur, Autokorrektur und Rechtschreibprüfung nicht vorhanden. Was ist der Grund dafür? Ich verwende JSF 2.x.Benutzerdefinierte HTML-Tag-Attribute werden von JSF nicht gerendert

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

Antwort

51

Dies ist von Entwurf. Sie können nur Attribute angeben, die supported von der JSF-Komponente selbst sind (d. H. Es ist in der Attributliste in der tag documentation aufgeführt). Sie können keine willkürlichen zusätzlichen Attribute angeben, sie werden alle einfach ignoriert.

Es gibt mehrere Möglichkeiten, dieses Problem zu lösen:

  1. Wenn Sie bereits auf JSF sind 2.2+, einfach geben Sie es als passthrough attribute:

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

    (beachten Sie, dass ich verwende xmlns:a anstelle von xmlns:p, um einen Konflikt mit PrimeFaces Standard-Namensraum zu vermeiden)

    Oder:

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

  2. Verwenden OmniFacesHtml5RenderKit. Seit Version 1.5 unterstützt es die Angabe benutzerdefinierter Attribute unter <context-param>. Siehe auch die showcase example oder Javadoc.


  3. Erstellen Sie einen benutzerdefinierten Renderer. Sie können mehrere konkrete Beispiele in folgenden Antworten:

+0

Dank BalusC - Sie sind groß! – Jochen

+1

Vielen Dank BalusC, du bist der Meister von JSF :) fast alles, was ich brauche, wird von dir beantwortet .. – Simego

+0

Das funktioniert für mich, solange ich 'http://xmlns.jcp.org/jsf/passthrough benutze 'anstelle des alten java.sun.com Namensraums. – Joost