Để tóm tắt bằng ngôn ngữ rõ ràng: ${expression}
không chỉ được, trong khi #{expression}
thể làm cả hai được và thiết. Điều này là do ${expression}
chỉ được đánh giá một lần (ngay lập tức), trong khi #{expression}
được đánh giá trên mọi truy cập (hoãn lại).
Trong JSF trên JSP 2.0 hoặc Facelets 1.x, khi bạn đặt một cái gì đó như thế này là biểu hiện đầu tiên của trang
${bean.property}
nơi bean
là một yêu cầu scoped quản lý đậu, bạn sẽ thấy không có gì . Nhưng nếu bean
là một phiên quản lý phạm vi đậu và đã được tạo ra trước đó, sau đó bạn sẽ thấy giá trị tài sản được in. Điều này cũng áp dụng nếu bean được quản lý theo yêu cầu được tạo trước #{bean.xxx}
trong cùng một trang.
Nếu bạn thay vì làm như biểu hiện đầu tiên của trang
#{bean.property}
sau đó EL sẽ kiểm tra nếu bean
là null và nếu như vậy, sau đó nó sẽ thiết (tạo) một hình mới. Nếu thuộc tính được đặt trong khi xây dựng bean, thì bạn sẽ thấy thuộc tính được hiển thị bởi biểu thức này.
Tất cả điều này là bắt buộc để có được những thứ khác JSF UIInput
thành phần như <h:inputText>
hoạt động. Khi bạn gửi biểu mẫu, các số #{expression}
sẽ đặt các giá trị trong bean.