Tôi có một ứng dụng JSF 2 bao gồm một tệp jar có chứa một tệp faces-config.xml trong thư mục META-INF của nó. Hàm faces-config.xml chứa một khai báo của một bộ nghe pha. Tôi muốn ngăn chặn việc cài đặt này nghe giai đoạn mà không sửa đổi các tập tin jar chính nó. Điều này có khả thi không?Ngăn chặn cài đặt trình lắng nghe pha từ lọ được bao gồm trong jsf 2
Trả lời
Bạn không thể chặn các phần cụ thể của faces-config.xml
trong JAR của bên thứ ba khỏi bị diễn giải.
Bạn có về cơ bản 2 lựa chọn:
Khối cả
faces-config.xml
trong một JAR bên thứ 3 từ được giải thích bằng cách thêmmetadata-complete="true"
để webapp của riêngfaces-config.xml
.<faces-config ... metadata-complete="true">
Lưu ý rằng điều này cũng bỏ qua chú thích quét trong các lớp của JAR của bên thứ ba. Về cơ bản bạn cần phải xác định lại các phần cụ thể mà bạn muốn sử dụng trong trang web
faces-config.xml
của webapp.Cung cấp một tùy chỉnh
Lifecycle
thực hiện quaLifecycleFactory
mà bạn đăng ký trong<factory><lifecycle-factory>
của webapp củafaces-config.xml
. Trong triển khai đó, ghi đèaddPhaseListener()
tương ứng để thực hiện ví dụ: một kiểm trainstanceof
trước khi bỏ qua hoặc tiếp tục.
tùy chọn 2 có lẽ là điều đơn giản nhất đối với tôi khi xem xét có nhiều thư viện của bên thứ ba khác mà tôi muốn hoạt động đúng cách. – cyberoblivion
Tùy chọn thứ ba, ngoài tầm kiểm soát của bạn, sẽ đăng yêu cầu tính năng cho nhà cung cấp thư viện mà người nghe giai đoạn phải bỏ qua công việc của mình khi, ví dụ: một tham số ngữ cảnh nhất định, hoặc tham số yêu cầu, hoặc thuộc tính phiên, hoặc thậm chí một biến môi trường có mặt, tùy thuộc vào công việc/trách nhiệm thực tế của người nghe giai đoạn. – BalusC