EL
EL (Expression Language) là ngôn ngữ biểu thức trong JSP, cho phép truy cập dữ liệu của các bean, đối tượng ngầm định (implicit objects), thuộc tính trong request, session, application, hay pageScope, mà không cần viết mã Java thuần.
Truy cập thuộc tính
Lấy giá trị của biến message (có thể nằm trong request, session, application...):
<p>${message}</p>
Lấy thuộc tính name của bean user (tương đương với user.getName() trong Java):
<p>${user.name}</p>
Cách viết tương đương với ${user.name}, cho phép dùng khi tên thuộc tính là biến hoặc chứa ký tự đặc biệt:
<p>${user["name"]}</p>
Biểu thức điều kiện (Toán tử 3 ngôi)
Nếu user.name khác null, thì hiển thị tên; ngược lại hiển thị 'Guest':
<p>${user.name != null ? user.name : 'Guest'}</p>
Toán tử logic
Thường kết hợp với c:if
Trả về true nếu tuổi của người dùng lớn hơn 18:
<p>${user.age > 18}</p>
Trả về true nếu user.name là null hoặc chuỗi rỗng (""):
<p>${empty user.name}</p>
Trả về true nếu user.name tồn tại:
<p>${not empty user.name}</p>
Làm việc với các Scope (phạm vi)
Truy cập thuộc tính name trong các phạm vi tương ứng:
<p>${pageScope.name}</p>
<p>${requestScope.name}</p>
<p>${sessionScope.name}</p>
<p>${applicationScope.name}</p>
Sử dụng trong vòng lặp (kết hợp JSTL)
Duyệt qua danh sách todoList, hiển thị tiêu đề và trạng thái của từng công việc:
<c:forEach var="todo" items="${todoList}">
<p>${todo.title} - ${todo.completed ? 'Done' : 'Pending'}</p>
</c:forEach>
Ưu điểm của EL
- Giúp mã JSP ngắn gọn, dễ đọc hơn so với dùng scriptlet
<% ... %>. - Tự động xử lý
nullan toàn. - Dễ kết hợp với JSTL để xử lý điều kiện, vòng lặp, v.v.
