2009-09-02 20 views
6

Khi tạo nhiều tệp cấu hình khuôn mặt, việc đặt faces-config.xml bên ngoài WEB-INF có đúng không? Thông số JSF dường như không rõ ràng về điều này (Phần 10.1.3)JSF đang đối mặt với tệp cấu hình bên ngoài WEB-INF?

Nếu có, cách này phải được khai báo như thế nào faces-config.xml trong web.xml? những con đường được tạo ra bởi IDE (như Eclipse/JDev) thường sử dụng một cái gì đó như:

<context-param> 
    <param-name>javax.faces.CONFIG_FILES</param-name> 
    <param-value>/WEB-INF/faces-config1.xml</param-value> 
</context-param> 

Bây giờ, nếu tôi faces-config.xml nằm ngoài WEB-INF - là nó đúng để khai báo param-giá trị như một cái gì đó như "/WebContent/WEB-INF/faces-config2.xml"?

Trả lời

7

Có thể, nhưng không được khuyến nghị. Lý do bạn đặt các tệp cấu hình trong WEB-INF là máy chủ biết không phục vụ các tệp này - bạn có mã, cấu hình cơ sở dữ liệu và các thứ nhạy cảm khác ở đó.

Bạn không thể sử dụng "/WebContent/WEB-INF/faces-config2.xml" - AFAIK "WebContent" là nhật thực cụ thể. có tên tập tin cấu hình để được tuyệt đối bên trong WAR. Nó có nghĩa là chúng sẽ luôn bắt đầu bằng "/ WEB-INF /".

0

Nếu bạn đang tham chiếu chúng từ tệp web.xml, thì tệp cần phải có trong chiến tranh khi chạy. Có những cách khác mà vùng chứa có thể khám phá các tài nguyên faces-config.xml.

10.4.2 Tại thời gian khởi động ứng dụng, trước khi bất kỳ yêu cầu được xử lý, việc thực hiện JSF phải quá trình không hay nhiều tài nguyên cấu hình ứng dụng, nằm theo thuật toán sau đây:

  • Tìm kiếm cho tất cả các tài nguyên có tên "META-INF/faces-config.xml" trong đường dẫn tài nguyên ServletContext cho ứng dụng web này và tải mỗi tài nguyên dưới dạng tài nguyên cấu hình JSF (theo thứ tự ngược lại trong đó chúng được trả về bởi getResources() trên ContextClassLoader của Chủ đề hiện tại).

  • Kiểm tra sự tồn tại của tham số khởi tạo ngữ cảnh có tên javax.faces.CONFIG_FILES. Nếu nó tồn tại, coi nó như là một danh sách được phân tách bằng dấu phẩy của đường dẫn tương đối ngữ cảnh (bắt đầu bằng dấu "/") và tải từng tài nguyên được liệt kê được chỉ định.

  • Kiểm tra sự tồn tại của tài nguyên cấu hình ứng dụng web có tên là "/ WEBINF/ faces-config.xml" và tải nó nếu tài nguyên tồn tại.

1

Như đã đề cập trong câu trả lời của David, không nên đặt các tệp cấu hình bên ngoài thư mục WEB-INF. Tuy nhiên, nếu bạn đang tìm cách tổ chức dự án của mình, bạn có thể thử tạo một thư mục con mới trong số WEB-INF.

Ví dụ: khi tôi xử lý nhiều tệp cấu hình khuôn mặt, tôi sẽ tạo một thư mục /WEB-INF/config và đặt các tệp cấu hình khuôn mặt vào đó.

Các vấn đề liên quan