Est-il possible d’utiliser JSF + Facelets avec HTML 4/5?

Facelets s’appuie sur les espaces de noms XML pour travailler avec XHTML. Comment HTML 4, et pour autant que je sache, HTML 5 ne supporte pas les espaces de noms. De plus, HTML 5 contient de nouveaux éléments qui ne sont pas disponibles dans XHTML. Même HTML 4 et XHTML ont des différences en ce qui concerne les éléments et les atsortingbuts qu’ils prennent en charge.

La question est: est-il possible de rendre des documents HTML 4/5 en utilisant Facelets? Si c’est le cas, comment?

Puisque Facelets est une technologie de vue basée sur XML qui mange et émet essentiellement un balisage XML, vous ne pouvez pas l’utiliser avec un doctype HTML4. Le doctype HTML4 décrit plusieurs éléments qui ne peuvent pas se fermer automatiquement, comme , ,
et


. Cependant, avec XML, vous êtes obligé de les fermer comme , , etc. Utiliser un doctype HTML4 n’est donc absolument pas une option pour Facelets (c’est-à-dire lorsque vous respectez les normes et / ou craignez la W3 validator, il fonctionnera cependant parfaitement sur le plus sinon tous les navigateurs web).

En revanche, HTML5 autorise le balisage XML. Ceci est spécifié au chapitre 3.2.2 – Eléments :

Exemple:

  

Les auteurs peuvent éventuellement choisir d’utiliser cette même syntaxe pour les éléments vides dans la syntaxe HTML. Certains auteurs choisissent également d’inclure des espaces avant la barre oblique, mais cela n’est pas nécessaire. (L’utilisation d’espaces de cette manière est une convention héritée des directives de compatibilité de XHTML 1.0, annexe C.)

J’utilise moi-même < !DOCTYPE html> jusqu’au bout, même avec JSF / Facelets, même sans une déclaration < ?xml?> En haut de la page. Cela fonctionne parfaitement dans tous les navigateurs. Avec un doctype XHTML, vous devriez utiliser un Content-Type d’ application/xhtml+xml qui ne ferait que bloquer MSIE (il ne le comprend pas). Et comme c’est toujours l’un des navigateurs les plus utilisés … Remplacer le type de contenu XHTML par text/html est considéré comme dangereux , mais vous ne voulez pas non plus le faire.

Selon vos arguments:

HTML 5 ne supporte pas les espaces de noms.

Cela n’a pas d’importance. Les espaces de noms ne présentent un intérêt que pour la technologie de vue côté serveur basée sur XML (comme Facelets), qui à son tour peut générer du HTML pur avec ces balises. L’exemple suivant est légitimement valable pour Facelets:

 < !DOCTYPE html>   Title      

Cela rend la version HTML5 légitimement valide (côté client):

 < !DOCTYPE html>   Title   Some text   

Vous voyez, Facelets supprime déjà les déclarations XHTML car elles n’ont aucune signification du côté client.

Et,

Aussi HTML 5 a quelques nouveaux éléments qui ne sont pas disponibles dans XHTML

Cela n’a pas non plus de sens. Tout est question de la sortie générée. Ce qui peut être HTML5 aussi bien. Votre seul problème peut être la prise en charge du navigateur et la disponibilité de composants JSF tiers qui rendent des éléments spécifiques à HTML5. Depuis JSF 2.2, il est possible d’utiliser la nouvelle fonctionnalité d’éléments passthrough pour transformer des éléments personnalisés en un composant JSF. Donnez simplement à l’élément HTML5 un jsf:id . Il sera interprété de manière transparente en interne comme une instance UIPanel dans l’arborescence des composants JSF (comme ).

 < !DOCTYPE html>   Title   
Header
Main
Footer

Vous pouvez même le référencer depuis ajax comme dans .

En fait, XHTML est overhyped. Son seul but est de faciliter le développement HTML en utilisant des outils basés sur XML qui peuvent manipuler / transformer / générer des pages HTML côté serveur (comme Facelets). Mais certains starters l’utilisent également sans utiliser aucun outil XML et le produisent en l’état, car c’est “tellement cool” pour certaines raisons peu claires.

Ne vous méprenez pas XHTML est idéal en tant que technologie de vue côté serveur. Mais tout simplement pas en tant que technologie de balisage côté client. Il n’a absolument aucune valeur du côté du client.

Voir également:

  • Notre page wiki XHTML
  • Comment une section < ! DOCTYPE> devrait-elle apparaître dans JSF? HTML5 ou XHTML?
  • Prise en charge de JavaServer Faces 2.2 et HTML5, pourquoi XHTML est-il toujours utilisé?

Dans une note connexe, consultez cet article IBM developerWorks: JSF 2 fu: composants composites HTML5, partie 1

MyFaces a une extension pour html5. Essayez ceci http://myfaces.apache.org/html5/

J’ai lu que cela devrait être possible, mais je ne l’ai pas encore fait moi-même. Peut-être devriez-vous simplement utiliser HTML 5 dans le code de l’encapsuleur xHTML. Je vais voir, si je peux trouver la source si l’information je l’ai encore.

[EDIT] On dirait qu’il y a eu du travail chez MyFaces pour supporter le rendu HTML5 pendant l’été de Goole. Je ne sais pas si cela devrait être utilisé de manière productive, pour le moment.

  • Wiki MyFaces
  • java-doc
  • Jazzon talk, télécharger la présentation
  • Jazzon tal, Exploration de HTML 5 avec JSF 2

S’il vous plaît nous donner un retour, si vous le faites fonctionner. [/MODIFIER]

http://wiki.whatwg.org/wiki/HTML_vs._XHTML contient des informations utiles sur la manière dont les espaces de noms peuvent être utilisés en HTML5 pour faciliter la migration depuis XHTML. Vous pouvez peut-être essayer d’appliquer l’espace de noms comme il le suggère et voir ce qui se passe?