Tôi đã đọc trong tài liệu JSF rằng ResponseStateManager
có phương thức isPostBack()
. Làm thế nào (và ở đâu) tôi có thể có một ví dụ của ResponseStateManager
?Làm cách nào để biết tôi có đang ở trạng thái postback không?
Trả lời
Làm thế nào để biết nếu tôi ở một postback?
Phụ thuộc vào phiên bản JSF.
Trong JSF 1.0/1.1, không có phương thức ResponseStateManager#isPostback()
. kiểm tra nếu tham số javax.faces.ViewState
có trong bản đồ tham số yêu cầu có sẵn theo ExternalContext#getRequestParameterMap()
.
public static boolean isPostback() {
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
return externalContext.getRequestParameterMap().contains("javax.faces.ViewState");
}
Trong JSF 1.2, thực sự sử dụng ResponseStateManager#isPostback()
do đó thực sự kiểm tra sự hiện diện của javax.faces.ViewState
tham số trong bản đồ yêu cầu tham số.
public static boolean isPostback() {
FacesContext context = FacesContext.getCurrentInstance();
return context.getRenderKit().getResponseStateManager().isPostback(context);
}
Trong JSF 2.0, thay vào đó, hãy sử dụng.
public static boolean isPostback() {
return FacesContext.getCurrentInstance().isPostback();
}
chúng ta có thể kiểm tra isPostback trên trang jsf (không trong mã java)? –
Ví dụ hiện tại của 'FacesContext' có sẵn trong phạm vi EL bởi' # {facesContext} ', do đó việc này nên làm:' # {facesContext.postback} '. – BalusC
Thật vậy, trước jsf1.2, isPostBack được lấy thông qua requestScope of the current instance of FaceContext.
Kể từ JSF1.2, The ResponseStateManager (lớp helper để StateManager rằng biết công nghệ dựng hình cụ thể được sử dụng để tạo ra các phản ứng, một singleton abstract class, vended bởi RenderKit.)
Trong khôi phục lại giai đoạn xem của vòng đời, ViewHandler retrieves the ResponseStateManager object để kiểm tra xem yêu cầu có phải là đăng lại hay yêu cầu ban đầu không.
Nếu yêu cầu là đăng lại, phương thức therestoreView của ViewHandler được gọi. Phương thức này sử dụng đối tượngResponseStateManager để xây dựng lại cây thành phần và khôi phục trạng thái. Sau khi cây được xây dựng và trạng thái được khôi phục, cá thể theViewHandler là không cần thiết cho đến khi pha đáp ứng xuất hiện lại.
Bài viết được đề cập ở trên (Creating and Using a Custom Render Kit) minh họa cách triển khai/nhận ResponseStateManager, thông qua RenderKit (được xác định bởi trình xử lý thẻ triển khai thẻ hiển thị thành phần).
Có thể điều này là đủ để bạn có được ResponseStateManager của riêng mình trong ngữ cảnh không?
cảm ơn bạn đã hoàn thành của bạn (tôi đã bỏ phiếu cho bạn). Tôi cần một gợi ý thực tế hơn, đó là nơi tôi có thể nhận được một cá thể của ResponseStateManager mà triển khai của tôi đang sử dụng: Sau này tôi thấy rằng tôi có thể truy cập RenderKit từ FacesContext và sử dụng getResponseStateManager() –
Đối JSF1.2
public static boolean isPostback(){
FacesContext context = FacesContext.getCurrentInstance();
return context != null && context.getExternalContext().getRequestParameterMap().containsKey(ResponseStateManager.VIEW_STATE_PARAM);
}
- 1. Làm cách nào để biết tôi có đang ở trong ngăn xếp ngoại lệ Delphi không?
- 2. Thanh trạng thái trong Sublime Text 2 có thể cho bạn biết bạn đang ở trong Symbol nào không?
- 3. Oracle: OALL8 đang ở trạng thái không nhất quán
- 4. Làm thế nào để tiêu diệt một Thread trong Java đang ở trạng thái RUNNING?
- 5. Kiểm tra xem chuỗi Win32 có đang chạy hay đang ở trạng thái tạm dừng
- 6. Kiểm tra xem Excel có ở trạng thái bẩn không
- 7. Làm cách nào để biết tôi đang ở trong chương trình con nào?
- 8. Có ai biết trạng thái hiện tại của Graphics32 không?
- 9. Tôi làm cách nào để có được trạng thái của một chương trình?
- 10. UINavigationController có khoảng cách thanh trạng thái thêm ở đầu
- 11. Làm cách nào để biết tập lệnh Perl của tôi có đang chạy trong Windows không?
- 12. Làm cách nào để tôi có thể tạo trạng thái "AjaxLink" của Wicket?
- 13. Làm cách nào để biết trạng thái cuộc gọi - Asterisk và PHP?
- 14. Làm cách nào để tôi có thể chọn Primefaces selectonemenu ở trạng thái bị vô hiệu hóa?
- 15. JavaScript, không biết tôi đang làm gì
- 16. Làm cách nào để biết trạng thái của div trong jquery?
- 17. Làm thế nào để biết trạng thái cuộc gọi twilio (đã hoàn thành hay không)
- 18. Làm cách nào để biết tôi có đang biên dịch mã F90 hay F95 không?
- 19. Làm cách nào để biết hành động của tôi có đang được gọi bởi RenderAction không?
- 20. Làm cách nào để biết liệu tôi có đang chạy từ JRuby và Ruby không?
- 21. HTTPS có trạng thái hoặc trạng thái không?
- 22. Làm cách nào để thêm trạng thái tệp git vào trạng thái của vim?
- 23. Làm cách nào để nhận được windbg để lưu trạng thái phiên của tôi?
- 24. Oracle SqlError: Giao thức vi phạm/OALL8 đang ở trạng thái không nhất quán
- 25. Làm cách nào tôi có thể đặt tiêu điểm cho ứng dụng là allready trong trạng thái đang chạy?
- 26. Làm cách nào để bảo toàn trạng thái đóng JavaScript?
- 27. Đang tải thanh trên thanh trạng thái?
- 28. Trong tình huống nào có trạng thái tốt hơn không trạng thái cho web?
- 29. Tôi làm cách nào để viết máy chủ đa khách hàng không có trạng thái có thể thay đổi?
- 30. Eclipse: Làm cách nào để biết liệu tôi đang Chạy hoặc Gỡ lỗi một ứng dụng không phải máy chủ?
Tôi thấy từ nhận xét của bạn, bạn đã tìm thấy giải pháp thiết thực và điều đó thật tuyệt. Bạn có thể xuất bản nó ở đây như là một câu trả lời, và tôi sẽ bỏ phiếu nó lên;) – VonC