web-dev-qa-db-fra.com

Différence entre JSP EL, JSF EL et Unified EL

Je voudrais connaître la différence détaillée entre les langages d'expression (EL). Il existe JSP EL, JSF EL et Unified EL.

Je voudrais connaître l'historique de l'EL et quelle est la dernière EL utilisée dans les applications Java EE. Est-ce l'EL commun à toutes les technologies d'affichage dans les dernières versions?

122
Krishna
  • Juin 2002: JSTL 1.0 a été introduit avec EL pour la première fois. Ce sont ces ${} Choses qui ne fonctionnent que dans les balises JSTL. Il est conçu pour appeler les méthodes Javabean get.

  • Nov 2003: JSP 2.0 a été introduit et EL a été déplacé de JSTL 1.0 vers JSP 2.0 dans le package javax.servlet.jsp.el et il est devenu EL standard dans le cadre de la norme J2EE 1.4. JSTL 1.1 a été expédié sans EL. Maintenant, ${} Fonctionne également en dehors des balises JSTL dans le texte du modèle JSP.

  • Mars 2004: JSF 1.0 a été introduit avec EL différé dans javax.faces.el package. Ce sont ces #{} Qui fonctionnent uniquement dans les balises JSF. La différence avec JSP EL standard ${} Est qu'il ne fait pas seulement get, mais peut aussi faire set. Cela était obligatoire pour la création automatique de beans gérés et la définition des valeurs des composants d'entrée. L'EL standard ${} Fonctionne également dans les balises de sortie JSF, mais ils ne créeront pas automatiquement de beans s'ils n'existent pas encore dans la portée et ils ne définiront pas de valeurs d'entrée.

  • Mai 2005: tout en préparant le nouveau JSP 2.1 qui devrait sortir en mai 2006, EL différé #{} A été extrait de JSF et combiné avec EL standard ${} Dans le javax.el package. À ce stade, il est devenu EL unifié qui a été introduit avec JSF 1.2 et est devenu plus tard une partie de JSP 2.1 et Java Norme EE 5. Le #{} Peut désormais également être utilisé dans les balises JSP pour les valeurs get, mais pas pour les valeurs set. Le ${} Peut désormais être utilisé dans JSP créez également des beans gérés automatiquement, mais pas des valeurs set.

  • Nov 2006: Facelets a été introduit comme successeur de JSP. Il a permis l'utilisation de #{} Dans le texte du modèle en dehors des balises JSF, en remplacement de <h:outputText> Sans aucun attribut. Il traite également ${} Comme #{}, Donc ils se comportent tous les deux de la même manière dans Facelets.

  • Décembre 2009: EL a été extrait de la spécification JSP et est devenu une spécification autonome qui sera maintenue indépendamment de JSP, la première version étant EL 2.2 (JSR-245), analogue à JSP 2.2. La nouvelle fonctionnalité principale appelle les méthodes paramétrées au lieu d'appeler uniquement les getters/setters Javabean dans la syntaxe #{}, Par ex. #{bean.method(argument)}. De plus, Facelets est devenu une partie de la norme Java EE 6 standard.

  • Juin 2013: EL 3.0 a été introduit avec un processeur EL autonome, permettant une utilisation dans une application simple Java SE. Les autres principales nouvelles fonctionnalités sont le nouvel opérateur de concaténation de chaînes +=, nouvelles opérations pour les objets de collection, y compris les flux et les expressions Lambda -> (même sur Java 6/7!) et importation de constantes dans l'étendue EL.

216
BalusC

Ajout à la réponse de BalusC ...

EL a été initialement conçu et mis en œuvre par Nathan Abramson de Art Technology Group en 2001. À l'époque, la mise en œuvre était connue sous le nom de langage d'expression le plus simple possible (SPEL). L'implémentation a ensuite été incluse dans le JSTL1.0. Nathan faisait partie du JSR-052 Expert Group , et a été crédité dans le spécification JSTL comme la force motrice derrière le langage d'expression.

"Mention spéciale à Nathan Abramson pour avoir été un moteur de la langue d'expression introduite dans JSTL"

18
jsears