Soporte de JavaServer Faces 2.2 y HTML5, ¿por qué XHTML todavía se está utilizando?

Habiendo leído acerca del soporte HTML5 en JSF 2.2 , me sorprendió encontrar el mismo doctype XHTML que en las versiones anteriores de Facelets en el archivo de plantilla creado con una nueva aplicación web en Netbeans. La única diferencia es que la etiqueta HTML se lee en JSF 2.2:

 

, en lugar de lo siguiente en versiones anteriores de JSF:

  

Parece un poco incorrecto seguir usando XHTML con la promesa de HTML5 en mente. Solo tengo la opción de usar 2.2 si lo elijo de “bibliotecas registradas” en lugar de “biblioteca del servidor”. ¿Afecta esto la forma en que se aplica la versión de marco al proyecto?

¿Facelets depende demasiado de XHTML para soportar HTML5?

Parece que malinterpretaste el propósito de XHTML como tantas personas durante el sobrehombre XHTML hace un par de años. Larga historia corta: consulte nuestra página de XHTML wiki . Cuidadosamente léelo. En pocas palabras, a Facelets no le importa el doctype que se use en la salida HTML generada. Puede perfectamente declarar un doctype HTML5 en una plantilla Facelets.

De hecho, es desafortunado que Netbeans por defecto prepare el documento con doctype XHTML, mientras que HTML5 es actualmente el doctype recomendado. No utilizo Netbeans, pero en Eclipse puedes editar fácilmente esas plantillas e incluso crear las tuyas propias. Puedes simplemente reemplazar todo el doctype XHTML por uno HTML5. Puede encontrar / crear esas plantillas a través de la Web »Archivos HTML» Editor »Plantillas en IDE prefs.

Tenga en cuenta que la compatibilidad con HTML5 en JSF 2.2 no tiene nada que ver con la capacidad de admitir específicamente el doctype HTML5. Por el contrario, esto es compatible con todas las versiones JSF, incluso cuando se usa JSP heredado. JSP y Facelets son tecnologías de visualización que le permiten generar resultados en HTML, que perfectamente puede ser HTML5 como bueno. Esto también se detalla en la siguiente respuesta estrechamente relacionada: ¿Es posible usar JSF + Facelets con HTML 4/5?

En cambio, el soporte HTML5 en JSF 2.2 cubre la posibilidad de definir atributos de componentes JSF personalizados y convertir elementos HTML personalizados en componentes JSF. Esto no fue posible en JSF 2.1 y antes. Cualquier atributo JSF personalizado (incluidos los atributos data-xxx recomendados por HTML5) simplemente fueron ignorados por los renderizadores JSF predeterminados. Consulte también la siguiente respuesta relacionada: JSF no representa los atributos de tags HTML personalizadas . En JSF 2.2 puede especificar fácilmente atributos personalizados por el nuevo espacio de nombres http://xmlns.jcp.org/jsf/passthrough siguiente manera:

  ...  

Esto terminará en la autocorrect atributo by para que realmente se incluya en la salida HTML generada. Tenga en cuenta que utilizo un prefijo de espacio de nombres XML de (“atributo”) en lugar de p como se muestra en el tutorial de Java EE , ya que de lo contrario entraría en conflicto con el prefijo de espacio de nombres XML predeterminado de PrimeFaces.

Convertir los elementos HTML personalizados (incluidos los elementos HTML5) en componentes JSF es una cuestión de especificar un atributo jsf:id como jsf:id .

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

Esos bajo las cubiertas se convertirán en UIPanel (como ). Y sí, son referenciables en, por ejemplo, .

En otras palabras, el “soporte HTML5” es simplemente otra palabra de moda para “Soporte personalizado de atributos”.