Come aggiungere l’attributo segnaposto al componente di input JSF?

Non dovrebbe questa linea di codice rendere un campo di testo di input con il testo segnaposto “riempire” quando si utilizza html5?

 

Non vedo alcun testo segnaposto. Ho pensato che tutto ciò che non era JSF è stato passato al browser per il rendering?

Ho pensato che tutto ciò che non era JSF è stato passato al browswer per il rendering?

Questa ipotesi è quindi sbagliata. Gli attributi dei componenti non specificati vengono ignorati dai programmi di rendering JSF.

In pratica hai le seguenti opzioni per farlo funzionare:

  1. Se sei già su JSF 2.2 o più recente, impostalo come attributo passthrough .

     <... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">  

    Si noti che utilizzo un prefisso dello spazio dei nomi XML di (“attributo”) anziché di p come mostrato nel tutorial, poiché altrimenti si scontrerebbe con il prefisso di default dello spazio dei nomi XML p di PrimeFaces.

  2. Implementa un renderizzatore personalizzato per cui controlli e scrivi esplicitamente l’attributo.

  3. Implementa un componente personalizzato che utilizza il renderer personalizzato di cui sopra.

  4. Implementa una soluzione basata su JS in cui prendi l’elemento dal DOM e imposta l’attributo in modo esplicito.

  5. Cerca una libreria di componenti che supporti questo fuori dagli schemi. Ad esempio, PrimeFaces ha un a questo scopo con una piacevole degradazione basata su JS per i browser che non supporta l’attributo placeholder sugli input.

  6. Cerca un kit di rendering che aggiunga supporto HTML5 al set di componenti standard. Ad esempio OmniFaces ha un Html5RenderKit per questo scopo.

Guarda anche:

  • Gli attributi dei tag HTML personalizzati non vengono renderizzati da JSF

Puoi ottenerlo sia con attributo placeholder che con p:watermark se usi Primefaces e JSF 2.0+ o, quando JSF 2.2 è disponibile, puoi usare pt:placeholder attributo pt:placeholder .

primefaces

  

Supporto browser legacy (aggiunge soluzione JS):

   

JSF 2.2 (senza PF)

        

Che fondamentalmente genera un HTML 5

  

Dai un’occhiata a questa risposta.

Con JSF 2.2 puoi passare attributi non specificati come questo:

   

Nel caso in cui si utilizzi RichFaces , a partire dalla versione 4.3, è ansible utilizzare il tag “rich: placeholder” per questo scopo, come mostrato qui . Fondamentalmente:

    

È molto semplice e il codice indipendente dal browser come BaluSc ha detto, In primefaces, utilizzare p:watermark per ottenere la funzionalità richiesta. La demo ufficiale è QUI

Prova questo

    

Con jQuery, questo funziona per me.

Usa primeface 4.0. Le versioni inferiori a questa versione non supportano l’attributo segnaposto.

  1. usa lo spazio dei nomi xmlns:pt="http://java.sun.com/jsf/passthrough" .

  2. p:inputTextarea id="textAreaValue" pt:placeholder="your text"

    non inserire una nuova riga in inputTextArea .

      

Funziona bene per me, provalo!

Il modo più semplice per eseguire il rendering di un campo di input con un testo segnaposto consiste nell’utilizzare il tag di input elementare

Esempio:

  

Nota: non è necessario includere spazi dei nomi