Разница между JSP EL, JSF EL и Unified EL

Я хотел бы узнать подробную разницу между языками выражения (EL). Есть JSP EL, JSF EL и Unified EL.

Я хотел бы знать историю, лежащую в основе EL, и что такое последнее EL, которое используется в приложениях Java EE. Является ли он общим для всех технологий просмотра в последних версиях?

Ответы

Ответ 1

  • Июнь 2002: JSTL 1.0 был введен с EL в первый раз. Это те ${} вещи, которые работают только в тегах JSTL. Он предназначен для вызова методов Javabean get.

  • Ноябрь 2003: был введен JSP 2.0, и EL был перемещен из JSTL 1.0 в JSP 2.0 в пакет javax.servlet.jsp.el, и он стал стандарт EL как часть стандарта J2EE 1.4. JSTL 1.1 был отправлен без EL. Теперь ${} работает вне тегов JSTL в тексте шаблона JSP.

  • Март 2004: JSF 1.0 был представлен с отложенным EL в пакете javax.faces.el. Именно те #{} вещи работают только в тегах JSF. Разница со стандартным JSP EL ${} заключается в том, что он не только выполняет get, но также может выполнять set. Это было обязательным для автоматизированного создания bean и установки значений входных компонентов. Стандартный EL ${} также работает в выходных тегах JSF, но они не будут автоматически создавать beans, если они еще не существуют в области видимости, и они не будут устанавливать входные значения.

  • Май 2005: Пока готовится новый JSP 2.1, который должен быть выпущен в мае 2006 года, отложенный EL #{} был извлечен из JSF и объединен со стандартным EL ${} в javax.el. В этот момент он стал унифицированным EL, который был представлен с JSF 1.2 и стал более поздним компонентом стандарта JSP 2.1 и Java EE 5. Теперь #{} можно также использовать в тегах JSP для значений get, но не до значений set. ${} теперь может в JSP автоматически создавать управляемые значения beans, но не set.

  • Ноябрь 2006: Facelets был представлен как преемник JSP. Это разрешало использовать #{} в тексте шаблона вне тегов JSF в качестве замены для <h:outputText> без каких-либо атрибутов. Он также рассматривает ${} как #{}, поэтому они оба ведут себя одинаково в Facelets.

  • Декабрь 2009: EL был извлечен из спецификации JSP и стал автономной спецификацией, которая будет поддерживаться независимо от JSP, первая версия - EL 2.2 (JSR-245), аналогичная JSP 2.2. Основной новой функцией является вызов параметризованных методов вместо вызова Javabean getters/setters внутри синтаксиса #{}, например. #{bean.method(argument)}. Кроме того, Facelets стала частью стандарта Java EE 6.

  • Июнь 2013: был введен EL 3.0, который поставляется с автономным процессором EL, что позволяет использовать его в простом приложении Java SE. Другими основными новыми функциями являются новый оператор конкатенации строк +=, новые операции для объектов коллекции, включая потоки и выражения Lambda -> (даже на Java 6/7!) И импортирование констант в область EL.

Ответ 2

Добавление в ответ BalusC...

EL был первоначально задуман и реализован Натан Абрамсон из Art Technology Group в 2001 году. В то время реализация была известна как Simplest Possible Expression Language (SPEL). Реализация позже была включена в JSTL1.0. Натан был частью JSR-052 Expert Group и был зачислен в JSTL в качестве движущей силы языка выражения.

"Особое упоминание для Натана Абрамсона за то, что оно является движущей силой выражения язык, введенный в JSTL"