2010-01-26 35 views

Trả lời

4

Cách đúng để thực hiện là tạo lớp con của HttpServletRequestWrapper, ghi đè getRequestURI() và các phương thức khác để trả về URL mới và bao gồm yêu cầu với nó. Vì vậy, bạn không phải thay đổi ánh xạ bộ lọc khác.

3

nhưng điều đó khiến cho tất cả các bộ lọc khác trong chuỗi không được gọi.

Chỉ cần định cấu hình lại các bộ lọc khác để nghe trên url-pattern mới.

+0

bộ lọc khác tôi nói đến được ánh xạ tới/*. Nhưng tôi đã tìm ra rằng tôi có thể thêm FORWARD vào bản đồ bộ lọc và làm cho nó được gọi. – Kyle

+0

Và điều đó nữa, vâng. Tốt bạn tìm thấy nó cho mình. – BalusC

3

Tại sao bạn tự viết khi bạn có nhiều tùy chọn được viết hoàn chỉnh cho bạn? Bạn có thể sử dụng Tuckey lọc URL viết lại, nhưng tôi cũng sẽ có một cái nhìn PrettyFaces OCPsoft hoặc OCPsoft Viết lại cho điều này:

Với PrettyFaces:

tạo WEB-INF/khá-config.xml

<url-mapping> 
    <pattern value="/#{username}" /> 
    <view-id value="/profile.jsp" /> 
</url-mapping> 

Điều này sẽ tự động đặt giá trị của URL "tên người dùng" vào thông số yêu cầu có tên "tên người dùng" và sẽ ẩn URL gốc và thay thế bằng URL mới trong liên kết trong các trang HTML của bạn.

Với Rewrite:

Đây là điều tương tự sử dụng Rewrite, đó là rõ ràng hơn một chút, nhưng cũng mạnh mẽ hơn và cấu hình.

ConfigurationBuilder.begin() 
    .addRule(Join.path("/{username}").to("/profile.jsp") 
       .where("username").bindsTo(Request.parameter("username"))); 

Tôi hy vọng điều này sẽ hữu ích.

~ Lincoln

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