2011-01-06 70 views
20

Tôi có một ứng dụng JSF2 đơn giản sử dụng Facelets. Web.xml của tôi được đặt như sau: -Làm thế nào để đặt JSF2 <welcome-file> với khuôn mặt servlet mapping?

<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
<url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 

Tôi muốn đặt ứng dụng về mặc định thành trang chào mừng /pages/login.xhtml. Tôi dường như không thể nhận được cài đặt tệp chào mừng để nhận điều này khi truy cập vào ngữ cảnh gốc trong trình duyệt.

web.xml của tôi hoan nghênh thiết lập như sau: -

<welcome-file-list> 
<welcome-file>/pages/login.jsf</welcome-file> 
</welcome-file-list> 

Làm thế nào để buộc sự đón tiếp trang để goto trang đăng nhập và đảm bảo nó đi qua những gương mặt servlet?

Nếu tôi sử dụng các trang hiển thị sau nhưng nó đã không trải qua những gương mặt servlet và do đó phải đối mặt với các thành phần không được hiển thị: -

<welcome-file-list> 
<welcome-file>pages/login.xhtml</welcome-file> 
</welcome-file-list> 

Bất kỳ giúp đánh giá cao!

Trả lời

22

Bạn phải tạo tệp login.jsf trống, bên cạnh tệp login.xhtml của mình. Đối với một số lý do này hack là cần thiết để lừa container servlet vào suy nghĩ của bạn tập tin chào đón tồn tại.

Lưu ý: Phản hồi được phân phát sẽ vẫn là phản hồi JSF bằng tệp login.xhtml của bạn, chứ không phải tệp login.jsf trống mà bạn tạo.

+3

Cảm ơn bạn đã chỉnh sửa BalusC - Tôi đã trả lời câu hỏi tôi mong đợi, không phải là câu hỏi tôi đã đọc! –

+0

Điều đó hoạt động! Rất cám ơn câu trả lời (và chỉnh sửa!) – oidsman

+0

Cảm ơn bạn. Hoạt động tuyệt vời. –

1

Thông tin bổ sung cho giải pháp gốc.

Đây chỉ là nhu cầu tương thích ngược đối với các thùng chứa servlet trước phiên bản 3. Khi chạy dưới Glassfish 3.1 hoặc Tomcat 7, chẳng hạn, không còn cần phải có tệp rỗng như thế này nữa. Tôi chạy thử nghiệm để xác minh bằng Tomcat 6 và Tomcat 7. Trong quá khứ tôi đã chạy thử nghiệm với Glassfish và giả định một vấn đề Tomcat 6 đã được phát kể từ khi chúng tôi chạy phần mềm của chúng tôi trong Tomcat 6 tại thời điểm hiện tại và nó không phải là 3.0 servlet container. Tôi đã được sử dụng một trang JSP với chuyển hướng nhưng sau khi di chuyển trên hoàn toàn để facelets tôi không thích có một trái trên trang JSP. Đây là một giải pháp tuyệt vời cho ngắn hạn cho đến khi chúng tôi đang chạy trong một thùng chứa 3.0 servlet. Lý do thực sự nó hoạt động là tất cả đang được thực hiện với mục nhập WEB.XML là một kiểm tra về sự tồn tại của tệp. Công việc thực sự được xử lý cho JSF khi nó bắt được yêu cầu đến trang khuôn mặt, vì vậy nó không bao giờ truy cập trang trống đó cho bất cứ thứ gì.

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