2010-06-03 28 views
7

Tôi có một ứng dụng được viết cho Servlet Spec 2.4 với một máy chủ web cũ được thiết kế cho Servlet Spec 2.3. Tệp web.xml có cú pháp sau:Điều phối viên cho Lọc bản đồ

<filter-mapping> 
    <filter-name>sitemesh</filter-name> 
    <url-pattern>*.action</url-pattern> 
    <dispatcher>REQUEST</dispatcher>  
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 

Tôi có thể viết lại bản đồ này để tuân thủ servlet 2.3 không?

Trả lời

1

Chỉ cần xóa thẻ < điều phối>.

Servlet 2.3 không hỗ trợ người điều phối. Nếu bạn không bao gồm, nó không tạo ra bất kỳ sự khác biệt nào. Nếu bạn đã bao gồm servlet/JSP, bạn cần phải đổi tên chúng để chúng không được lọc để có được hành vi chính xác là 2.4.

9

Bạn chỉ có thể xóa các mục nhập <dispatcher>. Bộ lọc Servlet 2.3 theo mặc định sẽ gửi đi mọi thứ và điều đó vẫn ổn. Sitemesh thậm chí còn đề cập đến trang web của mình rằng nó tương thích với Servlet 2.3. Dưới đây là một chiết xuất từ ​​their site:

SiteMesh là một Servlet Lọc và do đó đòi hỏi một container mà phù hợp với Servlet 2.3 đặc điểm kỹ thuật.

+0

Tôi không chắc chắn nếu trong đặc tả servlet 2.4 nếu bạn xóa tất cả các thẻ , bộ lọc sẽ thực hiện allways hoặc không bao giờ. –

+3

@David: kể từ 2.4 nó thực hiện theo mặc định trên 'REQUEST' chỉ. Đối với 'INCLUDE' và' FORWARD', bạn phải tự xác định '' (ngoài 'REQUEST'!). – BalusC

+0

Hoàn hảo, cảm ơn! –

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