Series JSF - Phần 2: Các pha / giai đoạn trong vòng đời của JSF
Series JSF - Phần 2: Các pha / giai đoạn trong vòng đời của JSF Nguồn: https://stackjava.com/jsf/series-jsf-phan-2-cac-vong-doi-trong-jsf.html Vòng đời trong ứng dụng JSF gồm sáu giai đoạn như sau: Restore view phase Apply request values phase; process events Process validations phase; process ...
Series JSF - Phần 2: Các pha / giai đoạn trong vòng đời của JSF Nguồn: https://stackjava.com/jsf/series-jsf-phan-2-cac-vong-doi-trong-jsf.html
Vòng đời trong ứng dụng JSF gồm sáu giai đoạn như sau:
Restore view phase Apply request values phase; process events Process validations phase; process events Update model values phase; process events Invoke application phase; process events Render response phase
6 giai đoạn bên trên được sắp xếp theo thứ tự khi thực hiện xử lý 1 form.
Dưới đây mình sẽ lấy ví dụ khi thực hiện xử lý form login gồm 2 thông tin 'user name' và 'password' trên trang login.xhtml
Giai đoạn 1: Khôi phục view (Restore view) Khi bạn truy cập trang login. JSF sẽ kiểm tra trong FaceContext xem màn hình login này đã được hiển thị trước đó chưa, nếu đã hiển thị thì nó sẽ khôi phục lại các component với các trạng thái ban đầu. Giai đoạn này đồng thời cũng xây dựng chế độ xem trang, trình xử lý sự kiện, xác nhận tính hợp lệ của các component (các thẻ viết có đúng cú pháp không...).
Giai đoạn 2: Áp dụng các giá trị từ request (Apply request values) Sau khi các component được tạo/khôi phục, mỗi component sẽ được sử dụng để lấy ra các giá trị theo tham số. (Ví dụ: lấy thông tin username từ field 'username', lấy thông tin password từ field 'password'). Nếu việc chuyển đổi thất bại, một message lỗi sẽ được tạo ra và cho vào hàng đợi của FacesContext (Ví dụ tham số name của field 'username' là jd1_username nhưng trên server đang lưu trạng thái của nó là jd2_username).
Nếu trong quá trình decode để lấy các giá trị, có bất kì sự kiện nào gọi tới renderResponse thì JSF sẽ chuyển tới giai đoạn trả lời phản hồi (Render Reponse).
Giai đoạn 3: Thực thi việc kiểm tra tính hợp lệ (Process validation) Trong giai đoạn này, JSF sẽ kiểm tra tính hợp lệ của các giá trị trong mỗi component. (Ví dụ kiểm tra username, password đã lấy ra có bị null không, chiều dài có hợp lệ không....)
Nếu các giá trị không hợp lệ, JSF sẽ thêm các message lỗi vào thể hiện FacesContext và chuyển tới Giai đoạn trả lời phản hồi và hiển thị các message lỗi trên trang hiện tại.
Giai đoạn 4: Cập giá giá trị cho Model Sau khi JSF kiểm tra và xác nhận data hợp lệ, nó sẽ lấy các dữ liệu đó cài vào các thuộc tính tương ứng với đối tượng. (Ví dụ giá trị username, password sẽ được set vào thuộc tính username, password của đối tượng User). Nếu có bất kì method update giá trị nào gọi tới renderReponse hoặc yêu cầu chuyển hướng. JSF sẽ chuyển tới giai đoạn trả lời phản hồi.
Giai đoạn 5: Gọi ứng dụng (Invoke application) Trong giai đoạn này, JSF xử lý các xự kiện ở mức độ ứng dụng. (Ví dụ với đối tượng User đã được cập nhật các giá trị sẽ tiến hành kiểm tra so sánh với database để thực hiện xác thực/login)
Giai đoạn 6: Trả lời phản hồi (Render response) Trong giai đoạn này, JSF sẽ yêu cầu container/ứng dụng server trả về trang/view (Ví dụ trả về trang quản trị nếu login thành công hoặc trang login nếu login thất bại...). Sau đó, trạng thái của các component trong view vừa trả về sẽ được server lưu lại để phục vụ cho giai đoạn khôi phục view.
Bài tiếp theo mình sẽ giới thiệu về Managed bean và các scope trong JSF: https://stackjava.com/jsf/series-jsf-phan-3-quan-ly-beans-cac-scope-trong-jsf.html