2012-12-22 6 views
15

Thứ tự thực hiện của những thứ đó là gì?Thứ tự thực hiện jsf của f: các sự kiện

Đây là một câu hỏi về tên f:event sự kiện thể: List of JSF 2 events?

preRenderComponent 
preRenderView 
postAddToView 
preValidate 
postValidate 

tôi muốn kiểm tra xem một người dùng được lưu trong một session bean được đăng nhập vào và nếu không chuyển hướng đến trang web đăng nhập, mà cần phải xảy ra trước khi chuyển đổi xem-param giai đoạn kể từ khi chuyển đổi được sử dụng phụ thuộc vào người dùng đăng nhập. 'preValidate' dường như diễn ra sau khi chuyển đổi và vì vậy tôi cần một sự kiện trước đó.

<f:event type="preRenderView" listener="#{beanA.checkLoggedIn()}"/> 
<f:viewParam name="param" value="#{beanB.param}" converter="#{beanB.converter}" required="true"/> 

tôi có lẽ đã đưa 'checkLoggedIn()' trong 'beanB' quá, nhưng cố gắng sử dụng một yêu cầu riêng biệt scoped đậu chỉ dành riêng cho việc kiểm tra để tôi có thể tái sử dụng nó một cách dễ dàng.

Trả lời

26

Thứ tự thực hiện của những thứ đó là gì?

  • postAddToView chạy ngay sau khi các thành phần được thêm vào để xem trong quá trình xem thời gian xây dựng (mà thường trong khôi phục quan điểm giai đoạn, nhưng cũng có thể là trong thời gian render giai đoạn phản ứng, ví dụ như chuyển hướng).
  • preValidate chạy ngay trước khi thành phần được xác thực (thường là trong giai đoạn xác thực, nhưng cũng có thể áp dụng pha giá trị yêu cầu nếu immediate="true").
  • postValidate chạy ngay sau khi thành phần được xác thực (thường là trong giai đoạn xác thực, nhưng cũng có thể áp dụng pha giá trị yêu cầu nếu immediate="true").
  • preRenderView chạy ngay trước khi chế độ xem được hiển thị trong giai đoạn phản hồi kết xuất.
  • preRenderComponent chạy ngay trước khi thành phần được hiển thị trong giai đoạn phản hồi kết xuất.

Nhấp vào liên kết để xem mô tả chi tiết trong phần giới thiệu javadoc.


tôi muốn kiểm tra xem một người dùng được lưu trong một session bean được đăng nhập vào và nếu không chuyển hướng đến trang web đăng nhập, mà cần phải xảy ra trước khi giai đoạn chuyển đổi xem param kể từ khi chuyển đổi sử dụng phụ thuộc trên Người dùng đã đăng nhập. 'preValidate' dường như diễn ra sau khi chuyển đổi và vì vậy tôi cần một sự kiện trước đó.

Bạn nên sử dụng đơn giản servlet filter cho việc này, chứ không phải sự kiện JSF. Tôi đã đăng một số ví dụ trước:

+1

'preValidate'/'postValidate' không được gọi ở tất cả trên một thành phần trong trường hợp của' ngay lập tức = "true" '. Nhìn vào mã nguồn Mojarra xác nhận điều đó. Đó có phải là như thế không? –