Pourquoi Facelets est préféré à JSP comme le langage de définition de vue de JSF2.À partir de 0?

je vois ça de JSF2.Le langage de définition de vue est le langage de définition de vue préféré et non JSP qui a été déprécié en tant que repli de l'héritage. Je veux comprendre pourquoi Facelets est préférable à JSP comme le langage de définition de vue de JSF2.À partir de 0 ? Je sais que JSP a aussi un comportement de modèle qui est le principal moteur de L'adoption des Facelets .

P. S: j'ai été par le biais de ce post stackoverflow mais je ne pense pas que cela réponde à ma question. D'où ce détachement d'une question distincte .

32
demandé sur Community 2012-10-26 22:10:56

2 réponses

vrai, JSP a quelque des capacités de templage , mais le plus grand inconvénient de l'utilisation de JSP dans JSF est que JSP écrit à la réponse dès qu'il rencontre le contenu de texte de modèle, tandis que JSF voudrait faire un certain pré/post traitement avec elle. Dans JSF 1.0 / 1.1, le code JSF suivant:

<h:outputText value="first"> second <h:outputText value="third"> fourth

produirait

deuxième quatrième premier troisième

C'était pendant le JSF 1.0/1.1 âges a maux de tête . Les développeurs devraient envelopper le texte du modèle comme second et fourth dans l'exemple ci-dessus dans <f:verbatim> tags over all place. JSF 1.2 l'a résolu avec un gestionnaire de vue amélioré qui analyse le JSP au lieu de l'exécuter, mais c'était sous les hoods encore très maladroit car la syntaxe JSP n'est pas "bien formée" comme XML. Une technologie de vue basée sur XML était fortement souhaitée, de sorte qu'un un analyseur de SAX efficace pourrait être utilisé. Et Facelets est né (parmi les "JSFTemplating"de Ken Paulsen).

aussi, el unifié #{} ne pouvait pas être utilisé dans le texte de modèle de JSP, résultant en laid-et pour commencer unintuitive - mélange de ${} et #{} . En outre, JSTL pourrait dans JSF 1.x sur JSP ne doit pas être utilisé comme voir les étiquettes de temps de construction . En outre, la syntaxe JSP avec <% %> choses est de la vieille école et la possibilité de l'intégration du code Java brut dans JSP est considéré comme une très mauvaise pratique qui casse idéologie MVC .

Tous avec tous, dans JSF/MVC point de vue, JSP est tout simplement affreuse et terrible et Facelets est tout simplement propre et impressionnant.

41
répondu BalusC 2017-05-23 12:09:36

j'ai trouvé les réponses suivantes sur Internet.

jsftoolbox documentation chapter 3 :

JSP au Moment de la Compilation dessus de la tête

chaque fois que vous éditez, Enregistrez et rechargez une page JSP, le compilateur JSP du serveur génère du code Java servlet et le compile dans un servlet. C'est ce qu'on appelle le processus de traduction JSP, et il coûte généralement entre 1 et 2 secondes, selon les performances du serveur.

Facelets XML Compilation

Contrairement aux Pages JavaServer, les pages Facelets ne sont pas compilées en servlets. Puisque les pages de Facelets sont conformes au XML, le cadre de Facelets utilise un compilateur rapide basé sur SAX pour construire vos vues. En outre, Facelets peut être configuré pour détecter et rendre des changements à vos pages immédiatement, en accélérant votre cycle de développement JSF.

Livre "JSF 1.2 composants" de Ian Hlavats, page 49 :

lors du développement d'applications JSF, nous apportons souvent des modifications à nos pages JSF, ce qui entraîne une recompilation fréquente de nos pages JSP, et ce les frais généraux peuvent s'additionner.

les pages Facelets sont des documents XML simples (pages XHTMl) qui ne sont jamais compilés pour servlets plutôt il utilise le processus de compilation basé sur SAX que construit L'interface utilisateur arbre de composants pour nos vues. Par conséquent, les Facelets sont plus rapides que JSP puisqu'ils sont libre à partir de la JSP traduction de frais généraux.

11
répondu Siva Kameswara Rao Munipalle 2014-10-16 12:05:22