2013-05-21 15 views
24

Desidero aggiungere alcuni attributi di tag specifici per iOS al mio modulo di accesso. Se ho un aspetto sul mio sito web fonte, gli attributi di correzione automatica, autocapitalize e controllo ortografico non ci sono. Qual è la ragione di questo? Sto usando JSF 2.x.Gli attributi dei tag HTML personalizzati non vengono visualizzati da JSF

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

risposta

51

Questo è di progettazione. È possibile specificare solo attributi che sono supported dal componente JSF stesso (ad esempio, è elencato nell'elenco degli attributi nello tag documentation). Non è possibile specificare attributi aggiuntivi arbitrari, saranno tutti semplicemente ignorati.

Ci sono diversi modi per risolvere questo:

  1. Se siete già in JSF 2.2 +, è sufficiente specificare come passthrough attribute:

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

    (si noti che sto usando xmlns:a invece di xmlns:p per evitare lo scontro con lo spazio dei nomi predefinito PrimeFaces)

    Oppure:

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

  2. Usa OmniFacesHtml5RenderKit. Dalla versione 1.5, supporta la specifica degli attributi personalizzati per <context-param>. Vedi anche showcase example o Javadoc.


  3. Creare un renderizzatore personalizzato. È possibile trovare numerosi esempi concreti nelle risposte qui sotto:

+0

Grazie BalusC - sei grande! – Jochen

+1

Grazie mille BalusC, sei il maestro di JSF :) quasi tutto quello di cui ho bisogno è una tua risposta .. – Simego

+0

Questo funziona per me, purché io usi 'http://xmlns.jcp.org/jsf/passthrough 'piuttosto che il vecchio spazio dei nomi java.sun.com. – Joost

Problemi correlati