JSF / Facelets: pourquoi n'est-ce pas une bonne idée de mélanger JSF/Facelets avec des balises HTML?

j'ai lu ceci plusieurs fois maintenant: certains développeurs ne sont pas partisans d'intercaler des tags JSF/Facelets avec des tags HTML dans leurs fichiers XHTML. Évidemment les balises HTML ne feront pas partie de L'arborescence des composants de L'interface utilisateur, mais quel est l'inconvénient de cela?

je trouve souvent des exemples de codes où les auteurs font ce genre de mélange:

http://www.ibm.com/developerworks/java/library/j-facelets /

http://www.packtpub.com/article/facelets-components-in-jsf-1.2

http://oreilly.com/catalog/9780596529246

"la Couture dans l'Action" aussi entrelace JSF/Facelets et de balises HTML.

Je ne sais plus quoi utiliser. J'ai commencé à mélanger des étiquettes, mais je commence à croire que ce n'était probablement pas le bon choix. Cependant, je ne vois pas pourquoi l'approche puriste est préférable.

je sais à coup sûr que j'ai une table où le datatable JSF ne me donne pas assez de flexibilité pour afficher ce dont j'ai besoin, donc le faire de façon puriste n'est pas possible.

de plus, je me demande pourquoi aucun des exemples ci-dessus n'utilise f:view etc. au lieu du html codé en dur, la tête,le corps etc. balise.

est-ce que quelqu'un peut clarifier ça pour moi?

13
demandé sur Kawu 2011-03-29 18:29:50

2 réponses

pendant les âges JSF 1.0/1.1 ce n'était en effet "pas une bonne idée", parce que tout le HTML n'était pas automatiquement pris dans l'arbre des composants JSF lors de l'utilisation de la technologie JSP comme view. Tout le HTML simple a été ardemment par JSP Rendu avant l'arbre des composants JSF. Par exemple:

<p>Lorem ipsum <h:outputText value="#{bean.value1}"> dolor sit amet<p>
<p>Consectetur adipiscing <h:inputText value="#{bean.value2}" /> elit</p>

a traduit par

<p>Lorem ipsum dolor sit amet<p>
<p>Consectetur adipiscing elit</p>

value1
<input type="text" value="value2" />

pour corriger cela, vous auriez besoin d'apporter <f:verbatim> .

<f:verbatim><p>Lorem ipsum </f:verbatim><h:outputText value="#{bean.value1}"><f:verbatim> dolor sit amet<p></f:verbatim>
<f:verbatim><p>Consectetur adipiscing </f:verbatim><h:inputText value="#{bean.value2}" /><f:verbatim> elit</p></f:verbatim>

C'était un une vraie douleur d'entretien. C'est l'une des principales raisons pour lesquelles JSF 1.0/1.1 a été tant détesté.

depuis JSF 1.2, avec le nouveau gestionnaire de vues, le <f:verbatim> n'était plus nécessaire. Les développeurs peuvent maintenant respirer soulagés. De plus, le nouveau gestionnaire de vue a permis à JSF d'utiliser une technologie de vue différente de celle de JSP et C'est ainsi que Facelets est né.

voir aussi:

17
répondu BalusC 2017-05-23 12:01:32

en règle générale, j'utilise un mélange entre les balises HTML et Facelets dans les pages de layout/template. Mais pour les pages de contenu actuelles, j'essaie de n'utiliser que les tags JSF disponibles avec ma bibliothèque JSF de choix (JSF + RichFaces).

de cette façon, je peux avoir plus de contrôle sur les éléments à afficher et à masquer, ainsi que sur le contenu de chaque élément, mais je peux encore coder ma mise en page principale dans le fichier de modèle facelets.

4
répondu Joachim H. Skeie 2011-09-06 08:34:48