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

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

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

2 ответа

Решение
  • Июнь 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, Это было обязательно для автоматического создания управляемого компонента и установки значений входных компонентов. Стандарт EL ${} работает и в выходных тегах JSF, но они не будут автоматически создавать бины, если они еще не существуют в области видимости и не будут устанавливать входные значения.

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

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

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

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

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

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

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

Другие вопросы по тегам