66 votes

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

Facelets s'appuie sur les espaces de noms XML pour fonctionner avec XHTML. Comment sont HTML 4 et, autant que je sache, HTML 5 ne prend pas en charge les espaces de noms. De plus, HTML 5 contient de nouveaux éléments qui ne sont pas disponibles en XHTML. Même HTML 4 et XHTML présentent des différences concernant les éléments et les attributs qu’ils prennent en charge.

La question qui se pose est la suivante: est-il possible de restituer des documents HTML 4/5 avec Facelets? Si c'est le cas, comment?

99voto

BalusC Points 498232

Depuis Facelets est une base de XML technologie d'affichage qui mange et qui émet dans l'essence de balisage XML, vous ne pouvez pas l'utiliser avec un HTML4 doctype. Le HTML4 doctype décrit plusieurs éléments qui ne peuvent pas être auto-fermeture, comme <link>, <meta>, <br> et <hr>. Cependant, avec le XML, vous êtes obligé de les fermer comme <link/>, <meta/>, etc. Donc, à l'aide d'un HTML4 doctype n'est absolument pas une option pour les Facelets (qui est, lorsque vous respectez les normes et/ou de la peur le w3c validator, il va cependant de fonctionner parfaitement sur la plupart, si pas tous les navigateurs internet).

HTML5, d'autre part, permet de balisage XML. Ceci est spécifié dans le chapitre 3.2.2 - Éléments:

Exemple:

<link type="text/css" href="style.css"/>

Les auteurs peuvent éventuellement choisir d'utiliser la même syntaxe pour les nuls éléments de la syntaxe HTML. Certains auteurs ont également choisir d'inclure d'espace avant le slash, mais ce n'est pas nécessaire. (En utilisant les espaces que la mode est une convention hérité de la compatibilité des lignes directrices en XHTML 1.0, Annexe C.)

J'utilise moi-même <!DOCTYPE html> tout le chemin, aussi avec la JSF/Facelets, même sans <?xml?> déclaration en haut de la page. Il fonctionne parfaitement sur tous les navigateurs. Avec un doctype XHTML vous devez conformément à la spécification être l'aide d'un Content-Type de application/xhtml+xml qui ne ferait que MSIE à étouffer (il n'a pas le comprendre). Et puisque c'est encore l'un des navigateurs les plus couramment utilisés... en Remplaçant le XHTML type de contenu en text/html est considéré comme nocif, vous ne voulez pas le faire.

En fonction de vos arguments:

HTML 5 ne prennent pas en charge les espaces de noms.

Ce n'est pas grave. Les espaces de noms ne sont d'intérêt pour le XML serveur en fonction de la vue de côté de la technologie (comme Facelets) qui peuvent à leur tour générer du HTML pur avec ces balises. L'exemple suivant est légitimement valable pour les Facelets:

<!DOCTYPE html>
<html lang="en"
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Title</title>
    </h:head>
    <h:body>
        <h:outputText value="#{bean.text}" />
    </h:body>
</html>

Cela rend légitimement HTML5 valide (pour le côté client):

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Title</title>
    </head>
    <body>
        Some text
    </body>
</html>

Vous voyez, Facelets déjà supprime le XHTML déclarations, car ils n'ont pas de sens dans le côté client.

Et,

Aussi le HTML 5 a certains nouveaux éléments qui ne sont pas disponibles en XHTML

cela aussi a aucun sens. Il est tout au sujet de la sortie générée. Qui peut être HTML5 comme bonne. Votre seul problème est peut-être la prise en charge du navigateur et de la disponibilité de la 3ème partie de composants JSF qui rend HTML5 éléments spécifiques.

En fait, le XHTML est overhyped. Sa seule intention est de faciliter le développement de HTML à l'aide de XML en fonction des outils qui peuvent manipuler/transformer/générer des pages HTML sur le côté serveur (comme Facelets). Mais certains démarreurs également l'utiliser sans l'aide d'aucun outil XML et de sortie de la plaine, parce que c'est "cool",- pour une obscure raison.

Ne m'obtenez pas le mal. XHTML est grand comme serveur de côté vue de la technologie. Mais tout simplement pas comme côté client balisage de la technologie. Il a absolument aucune valeur le côté client.

Voir aussi:

9voto

Vetle Points 719

Sur une note connexe, consultez cet article IBM developerWorks: JSF 2 fu: Composants composites HTML5, Partie 1

4voto

ogok Points 51

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

3voto

PageFault Points 118

J'ai lu, que ce devrait être possible, mais je n'ai pas le faire moi-même, encore. Peut-être que vous devriez simplement utiliser le HTML 5 à l'intérieur de l'xHTML code du wrapper. Je vais voir si je peux trouver la source d'informations que j'ai encore une fois.

[MODIFIER] Semble, il y a eu quelques travaux à MyFaces à la prise en charge de HTML5 rendu au cours de Goole, summer of code. Je ne sais pas si elle devrait être utilisée de manière productive, encore.

Merci de nous donner un feedback, si vous l'obtenir pour fonctionner. [/EDIT]

2voto

Martijn Verburg Points 2213

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 à partir de XHTML. Peut-être que vous pouvez essayer d’appliquer l’espace de noms comme il le suggère et voir ce qui se passe

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X