Разница между JSP EL, JSF EL и Unified EL [закрыто]

122

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

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

Кришна
источник

Ответы:

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

  • Ноябрь 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, но они не будут автоматически создавать bean-компоненты, если они еще не существуют в области видимости и не будут устанавливать входные значения.

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

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

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

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

jsears
источник