Làm cách nào để truy xuất FacesContext trong Bộ lọc?Làm cách nào để truy xuất FacesContext trong Bộ lọc
Tôi đi theo bài viết sau đây về cách lấy FacesContext
trong một Filter
:
http://ocpsoft.org/java/jsf-java/jsf-20-extension-development-accessing-facescontext-in-a-filter/
Nhưng vấn đề là nó không được làm việc với phạm vi Flash. NPE sau được ném:
java.lang.NullPointerException
at com.sun.faces.context.flash.ELFlash.loggingGetPhaseMapForWriting(ELFlash.java:751)
at com.sun.faces.context.flash.ELFlash.getPhaseMapForWriting(ELFlash.java:785)
at com.sun.faces.context.flash.ELFlash.put(ELFlash.java:392)
at com.sun.faces.context.flash.ELFlash.put(ELFlash.java:112)
Tôi muốn thêm chuyển hướng trong bộ lọc của tôi và sử dụng phạm vi flash để tiết kiệm một số dữ liệu và cũng tin nhắn, mà không hoạt động.
"do đó chỉ có sẵn trong bất kỳ mã Java nào được xử lý bởi FacesServlet, bao gồm tất cả các tạo phẩm JSF, chẳng hạn như bean được quản lý" Bây giờ tôi đang bối rối. Khi tôi tra cứu một bean được quản lý bằng cách sử dụng 'HttpSession.getAttribute()', FacesContext hiện tại vẫn là null. – djmj
Bộ lọc chạy trước 'FacesServlet'. Vì vậy, nhận được phiên quản lý scoped bean từ đó, nơi JSF đã lưu trữ "dưới nắp" trước khi 'FacesServlet' đã chạy không cho phép bạn truy cập vào' FacesContext'. – BalusC
Điều đó giải thích hành vi. Cảm ơn bạn đã trả lời :) – djmj