Facelets tác phẩm (như vậy, chỉ đơn giản *.xhtml
trang, các mẫu và bao gồm các file) đều được giải quyết bằng cách ExternalContext#getResource()
mà các đại biểu để ServletContext#getResource()
. Điều này đòi hỏi một container tương thích Servlet 3.x vì /WEB-INF/lib/*.jar!/META-INF/resources
giải quyết từ mới là Servlet 3.0. Nếu bạn chưa sử dụng Servlet 3.x, hoặc muốn đặt các JAR đó trên một vị trí khác vì một lý do nào đó, thì bạn cần phải tạo một tùy chỉnh ResourceResolver
. Xem thêm How to create a modular JSF 2.0 application?
Facelets thành phần composite và các tài nguyên tĩnh (như vậy, <cc:xxx>
thành phần và nguồn CSS/JS/hình ảnh đó sẽ được nạp bởi <h:outputStylesheet>
, <h:outputScript>
và <h:graphicImage>
) đều được giải quyết từ classpath bởi ClassLoader#getResource()
. Để bao gồm tệp JAR trong quét lớp đường dẫn của JSF, bạn cần phải bao gồm tệp JSF 2.x tương thích faces-config.xml
trong thư mục /META-INF
của tệp JAR. Cùng một câu chuyện áp dụng cho @ManagedBean
, @FacesValidator
, @FacesConverter
, @FacesComponent
và các đồ tạo tác JSF khác.
Khi phát triển trong Eclipse, bạn có thể chọn web> Web Fragment Dự án để tạo ra một dự án mô-đun đó. Nó không khác nhiều so với dự án Java bình thường, hy vọng rằng nó sẽ ngầm bao gồm khía cạnh JavaScript và thời gian chạy được nhắm mục tiêu, tự động tạo tệp /META-INF/web-fragment.xml
và liên kết với một dự án hiện tại Dynamic Web Project bằng cách thêm chính nó như là một hội đồng triển khai dự án.
Bạn cũng có thể sử dụng tiêu chuẩn hiện tại dự án Java với cấu trúc thư mục phù hợp đã chuẩn bị. Thư mục /META-INF
phải đi trong thư mục nguồn Java. Tệp web-fragment.xml
là tùy chọn. Bạn chỉ cần thêm thủ công dự án Java vào phần Triển khai Assembly của thuộc tính dự án web chính. Làm không thêm nó làm dự án khác trong phần Đường dẫn Xây dựng của dự án.
Khi bạn (thủ công) xây dựng tệp JAR ra khỏi nó, bạn cần đảm bảo rằng các mục nhập thư mục được thêm vào JAR, nếu không thì không thể giải quyết các bố cục Facelets. Nếu bạn đang xây dựng bằng cách xây dựng các công cụ như Eclipse/Ant/Maven/etc, điều này cũng phải được tính đến. Nếu điều này là không thể kiểm soát, một tùy chỉnh ResourceResolver
là cách tiếp cận đáng tin cậy nhất.
Một lần nữa cảm ơn rất nhiều. Trường hợp bạn có tất cả thông tin chi tiết này từ đâu. Bạn có một thực hiện các spec của riêng bạn :-) Các ResourceResolver là đơn giản và lên và chạy - bây giờ tôi sẽ cố gắng để nuôi một mảnh web để quái vật maven của chúng tôi ... – mtraut
Không làm việc cho tôi: Tôi đang sử dụng một hiện tại dự án Java được chia sẻ chuẩn mà tôi đã loại bỏ khỏi Đường dẫn Xây dựng của Dự án đang triển khai và bây giờ nó chỉ được thêm vào như một hội đồng triển khai. Nhưng vẫn còn ManagedProperty của tôi bị bỏ qua trong chú thích hoặc khuôn mặt-config. – djmj
@djmj: JAR phải có trình biên dịch JSF 2.0 '/ META-INF/faces-config.xml' và' faces-config.xml' của webapp chính không được có 'metadata-complete =" true "'. – BalusC