JavaServer Faces 2.2 e supporto HTML5, perché è ancora in uso XHTML

Avendo letto sul supporto HTML5 in JSF 2.2 , sono stato sorpreso di trovare lo stesso doctype XHTML delle versioni precedenti di Facelets nel file modello creato con una nuova applicazione Web in Netbeans. L’unica differenza è che il tag HTML viene letto in JSF 2.2:

 

, piuttosto che nelle seguenti versioni JSF:

  

Sembra un po ‘sbagliato continuare a utilizzare XHTML con la promise di HTML5 in mente. Ho solo la possibilità di usare 2.2 se lo scelgo da “librerie registrate” invece di “libreria server”. Questo influenza il modo in cui la versione del framework viene applicata al progetto?

Le facette sono troppo dipendenti da XHTML per supportare HTML5?

Sembra che tu abbia frainteso lo scopo di XHTML come molte persone durante l’overhype XHTML un paio di anni fa. Per farla breve: controlla la nostra pagina wiki XHTML . Leggilo attentamente. In poche parole, Facelets non si preoccupa assolutamente del doctype utilizzato nell’output HTML generato. Si può dichiarare perfettamente un doctype HTML5 in un modello Facelets.

In effetti, è infelice che Netbeans predisponga per impostazione predefinita il documento con doctype XHTML mentre HTML5 è attualmente il doctype consigliato. Non faccio Netbeans, ma in Eclipse puoi facilmente modificare quei template e persino crearne uno tuo. Puoi semplicemente sostituire l’intero doctype XHTML con uno HTML5. È ansible trovare / creare tali modelli tramite Web »File HTML» Editor »Modelli in pref. IDE.

Si noti che il supporto HTML5 in JSF 2.2 non ha nulla a che fare con il supporto specifico del doctype HTML5. Al contrario, questo è supportato su tutte le versioni JSF, anche quando viene utilizzato il JSP legacy. JSP e Facelets sono tecnologie di visualizzazione che ti permettono di generare output HTML, che può essere perfettamente buono come HTML5. Questo è anche elaborato nella seguente risposta strettamente correlata: È ansible utilizzare Facelets JSF + con HTML 4/5?

Invece, il supporto HTML5 in JSF 2.2 copre la possibilità di definire attributi di componenti JSF personalizzati e di trasformare elementi HTML personalizzati in componenti JSF. Questo non era ansible in JSF 2.1 e precedenti. Qualsiasi attributo del componente JSF personalizzato (inclusi gli attributi data-xxx consigliati da HTML5) sono stati semplicemente ignorati dai renderer JSF predefiniti. Vedi anche la seguente risposta correlata: Gli attributi dei tag HTML personalizzati non sono resi da JSF . In JSF 2.2 puoi facilmente specificare attributi personalizzati dal nuovo http://xmlns.jcp.org/jsf/passthrough spazio dei nomi come segue:

  ...  

Questo finirà nel attributo non supportato di autocorrect per essere effettivamente incluso nell’output HTML generato. Si noti che utilizzo un prefisso dello spazio dei nomi XML di (“attributo”) anziché di p come mostrato nell’esercitazione Java EE , poiché altrimenti si scontrerebbe con il prefisso predefinito dello spazio dei nomi XML p di PrimeFaces.

La trasformazione di elementi HTML personalizzati (compresi gli elementi HTML5) in componenti JSF consiste nel specificare un attributo jsf:id come jsf:id .

  ... 
...
...
...

Quelli sotto le copertine saranno trasformati in UIPanel (come ). E sì, sono referenziabili ad es. .

In altre parole, “supporto HTML5” è solo un’altra parola chiave per “Supporto attributo personalizzato”.