Różnica między JSP EL, JSF EL i Unified EL [zamknięte]

122

Chciałbym poznać szczegółową różnicę między językami wyrażeń (EL). Jest JSP EL, JSF EL i Unified EL.

Chciałbym poznać historię EL i jaka jest najnowsza EL, która jest używana w aplikacjach Java EE. Czy jest to EL wspólny dla wszystkich technologii widoku w najnowszych wersjach?

Kryszna
źródło

Odpowiedzi:

221
  • Czerwiec 2002: JSTL 1.0 został wprowadzony z EL po raz pierwszy. To były te ${}rzeczy, które działają tylko w tagach JSTL. Jest przeznaczony do wywoływania getmetod Javabean .

  • Listopad 2003: wprowadzono JSP 2.0, a EL został przeniesiony z JSTL 1.0 do JSP 2.0 w javax.servlet.jsp.elpakiecie i stał się standardowym EL jako część standardu J2EE 1.4. JSTL 1.1 został wysłany bez EL. Teraz ${}działa również poza znacznikami JSTL w tekście szablonu JSP.

  • Marzec 2004: Wprowadzono JSF 1.0 z odroczonym EL w javax.faces.elpakiecie. To były te #{}rzeczy, które działają tylko wewnątrz tagów JSF. Różnica w stosunku do standardowego JSP EL ${}polega na tym, że nie tylko działa get, ale także potrafi set. Było to obowiązkowe w przypadku automatycznego tworzenia zarządzanych fasoli i ustawiania wartości składników wejściowych. Standardowy EL ${}działa również w tagach wyjściowych JSF, ale nie utworzą automatycznie komponentów bean, jeśli nie istnieją jeszcze w zakresie i nie ustawią wartości wejściowych.

  • Maj 2005: Podczas przygotowań do nowej wersji JSP 2.1, która powinna zostać wydana w maju 2006, odroczony EL #{}został wyodrębniony z JSF i połączony ze standardowym EL ${}w javax.elpakiecie. W tym momencie stał się ujednoliconym EL, który został wprowadzony w JSF 1.2, a później stał się częścią standardu JSP 2.1 i Java EE 5. #{}Mogą być również wykorzystywane w znacznikach JSP do getwartości, ale nie setwartości. W ${}JSP można teraz również automatycznie tworzyć zarządzane komponenty bean, ale nie setwartości.

  • Listopad 2006: Facelets został wprowadzony jako następca JSP. Pozwoliło to na użycie #{}w tekście szablonu poza tagami JSF, jako substytut <h:outputText>bez atrybutów. Traktuje również ${}jako #{}, więc oba zachowują się tak samo w Facelets.

  • Grudzień 2009: EL został wyodrębniony ze specyfikacji JSP i stał się samodzielną specyfikacją, która będzie utrzymywana niezależnie od JSP, pierwsza wersja to EL 2.2 (JSR-245), analogiczna do JSP 2.2. Główną nową funkcją jest wywoływanie metod sparametryzowanych zamiast wywoływania tylko metod pobierających / ustawiających w języku Javabean w #{}składni, np #{bean.method(argument)}. Ponadto Facelets stał się częścią standardu Java EE 6.

  • Czerwiec 2013: Wprowadzono EL 3.0, który jest wyposażony w samodzielny procesor EL, umożliwiający użycie w zwykłej aplikacji Java SE. Inne główne nowe funkcje to nowy operator konkatenacji ciągów +=, nowe operacje dla obiektów kolekcji, w tym strumienie i wyrażenia Lambda ->(nawet w Javie 6/7!) Oraz importowanie stałych do zakresu EL.

BalusC
źródło
18

Dodawanie do odpowiedzi BalusC ...

EL został pierwotnie wymyślony i wdrożony przez Nathana Abramsona z Art Technology Group w 2001 roku. W tamtym czasie implementacja była znana pod nazwą Simplest Possible Expression Language (SPEL). Implementacja została później uwzględniona w JSTL1.0. Nathan był częścią grupy ekspertów JSR-052 i został wymieniony w specyfikacji JSTL jako siła napędowa języka ekspresji.

„Specjalne wyróżnienie dla Nathana Abramsona za bycie siłą napędową języka ekspresji wprowadzonego w JSTL”

jsears
źródło