ความแตกต่างระหว่าง JSP EL, JSF EL และ Unified EL [ปิด]


122

ฉันต้องการทราบความแตกต่างโดยละเอียดระหว่าง Expression Languages ​​(EL) มี JSP EL, JSF EL และ Unified EL

ฉันต้องการทราบประวัติเบื้องหลัง EL และ EL ล่าสุดที่ใช้ในแอปพลิเคชัน Java EE คืออะไร EL เป็นเรื่องธรรมดาสำหรับเทคโนโลยีมุมมองทั้งหมดในเวอร์ชันล่าสุดหรือไม่

คำตอบ:


221
  • มิ.ย. 2545: เปิดตัว JSTL 1.0 กับ EL เป็นครั้งแรก เป็น${}สิ่งที่ใช้ได้ในแท็ก JSTL เท่านั้น มันถูกออกแบบมาเพื่อเรียกgetวิธีการของJavabean

  • พฤศจิกายน 2546: เปิดตัว JSP 2.0 และ EL ถูกย้ายจาก JSTL 1.0 ไปเป็น JSP 2.0 ในjavax.servlet.jsp.elแพ็คเกจและกลายเป็นEL มาตรฐานโดยเป็นส่วนหนึ่งของมาตรฐาน J2EE 1.4 JSTL 1.1 จัดส่งโดยไม่มี EL ตอนนี้${}ทำงานนอกแท็ก JSTL ในข้อความเทมเพลต JSP เช่นกัน

  • มีนาคม 2547: เปิดตัว JSF 1.0 พร้อมกับEL รอการตัดบัญชีในjavax.faces.elแพ็คเกจ เป็น#{}สิ่งเหล่านั้นที่ใช้งานได้ภายในแท็ก JSF เท่านั้น ความแตกต่างกับ JSP EL มาตรฐาน${}คือไม่เพียง แต่ทำได้getแต่ยังสามารถทำได้setอีกด้วย สิ่งนี้จำเป็นสำหรับการสร้างอัตโนมัติ bean ที่มีการจัดการและการตั้งค่าของส่วนประกอบอินพุต EL มาตรฐาน${}ทำงานในแท็กเอาต์พุต JSF เช่นกัน แต่จะไม่สร้างถั่วอัตโนมัติหากยังไม่มีอยู่ในขอบเขตและจะไม่ตั้งค่าอินพุต

  • พฤษภาคม 2548: ในขณะที่ยังคงเตรียมพร้อมสำหรับ JSP 2.1 ใหม่ซึ่งควรจะออกในเดือนพฤษภาคม 2549 EL ที่รอการตัดบัญชี#{}ถูกแยกออกจาก JSF และรวมกับ EL มาตรฐาน${}ในjavax.elแพ็คเกจ ณ จุดนั้นมันกลายเป็นEL แบบรวมซึ่งได้รับการแนะนำให้รู้จักกับ JSF 1.2 และต่อมากลายเป็นส่วนหนึ่งของมาตรฐาน JSP 2.1 และ Java EE 5 #{}ขณะนี้ยังสามารถใช้ในแท็ก JSP เพื่อgetค่า แต่ไม่ให้setค่า ${}สามารถในขณะนี้ยัง JSP อัตโนมัติสร้างถั่วที่มีการจัดการ แต่ไม่ได้setค่า

  • พ.ย. 2549: Facelets ได้รับการแนะนำให้เป็นผู้สืบทอดของ JSP อนุญาตให้ใช้#{}ในข้อความเทมเพลตนอกแท็ก JSF แทน<h:outputText>โดยไม่มีแอตทริบิวต์ใด ๆ นอกจากนี้ยังปฏิบัติ${}เช่น#{}เดียวกันดังนั้นทั้งสองจึงมีพฤติกรรมเหมือนกันใน Facelets

  • ธันวาคม 2552: EL ถูกแยกออกจากข้อกำหนด JSP และกลายเป็นข้อมูลจำเพาะแบบสแตนด์อโลนซึ่งจะได้รับการดูแลโดยอิสระจาก JSP เวอร์ชันแรกคือ EL 2.2 (JSR-245) ซึ่งคล้ายคลึงกับ JSP 2.2 คุณลักษณะใหม่หลักจะเรียกวิธีการแปรแทนที่จะเป็นเพียงการเรียก getters จาวาบีน setters / ภายในไวยากรณ์เช่น#{} #{bean.method(argument)}นอกจากนี้ Facelets ยังกลายเป็นส่วนหนึ่งของมาตรฐาน Java EE 6

  • มิ.ย. 2556: เปิดตัว EL 3.0 ซึ่งมาพร้อมกับโปรเซสเซอร์ EL แบบสแตนด์อโลนทำให้สามารถใช้งานในแอปพลิเคชัน Java SE แบบธรรมดาได้ คุณสมบัติใหม่หลักอื่น ๆ ได้แก่ ตัวดำเนินการต่อสายอักขระ+=ใหม่การดำเนินการใหม่สำหรับวัตถุคอลเลกชันรวมถึงสตรีมและนิพจน์แลมบ์ดา->(แม้ใน Java 6/7!) และการนำเข้าค่าคงที่ไปยังขอบเขต EL


18

กำลังเพิ่มคำตอบของ BalusC ...

EL ได้รับการคิดและดำเนินการโดย Nathan Abramson จาก Art Technology Group ในปี 2544 ในขณะนั้นการใช้งานเป็นที่รู้จักกันในชื่อ Simplest Possible Expression Language (SPEL) การนำไปใช้ในภายหลังรวมอยู่ใน JSTL1.0 นาธานเป็นส่วนหนึ่งของกลุ่มผู้เชี่ยวชาญ JSR-052และได้รับเครดิตในข้อกำหนด JSTLว่าเป็นแรงผลักดันที่อยู่เบื้องหลังภาษานิพจน์

"กล่าวถึงนาธานอับรามสันเป็นพิเศษว่าเป็นแรงผลักดันที่อยู่เบื้องหลังภาษาสำนวนที่แนะนำใน JSTL"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.