Làm cách nào để chuyển hướng đến một trang khác bằng Wicket? IIRC, một số ngoại lệ phải được ném vào constructor, nhưng tôi không nhớ cái nào. Cảm ơn trước.Wicket: cách chuyển hướng đến một trang khác?
Trả lời
Ném một RestartResponseAtInterceptPageException
sẽ làm điều đó, như bạn đã nêu trong câu trả lời của riêng bạn, nhưng đó thực sự là một phần của một hệ thống cho phép chuyển hướng với một sự tiếp nối cuối cùng ở trang hiện tại (thường xuyên một phần của quy trình ủy quyền). Nếu đó không phải là tình huống của bạn, nhưng bạn vẫn phải làm điều gì đó làm gián đoạn việc xử lý, có thể tốt hơn là nên ném một số RestartResponseException
.
Cách sử dụng chính mà tôi biết trong số RestartResponseAtInterceptPageException
nằm trong quá trình "chuyển hướng đến trang đăng nhập". Nếu bạn đang sử dụng xác thực dựa trên vai trò, việc triển khai IAuthorizationStrategy
khi xác định rằng bạn không đăng nhập sẽ báo hiệu IUnauthorizedComponentInstantiationListener
được định cấu hình, thường là AuthenticatedWebApplication
mà ném ngoại lệ này nếu bạn chưa đăng nhập, với chuyển hướng đến cấu hình trang đăng nhập. (Nếu bạn đã đăng nhập nhưng không được phép, điều gì đó khác sẽ xảy ra ...).
Chuyển hướng thực tế được thực hiện bởi PageMap
, cũng trong trường hợp này, hãy nhớ trang bạn đang cố truy cập. Sau khi đăng nhập thành công, trang đăng nhập có thể yêu cầu gửi cho bạn trang bạn đang cố gắng ban đầu bằng cách gọi continueToOriginalDestination()
, là phương thức trong Component
và truy xuất trang đã nhớ từ PageMap
.
Có một số tốt example code cho quá trình xác thực này, nhưng ngoại lệ và chặn được ẩn đằng sau hậu trường một chút.
Tìm kiếm nhanh tất cả *Exception.java
tệp trong wicket đã tiết lộ. Người ta phải ném một RestartResponseAtInterceptPageException
:
public MyPage() {
...
if (redirect) {
throw new RestartResponseAtInterceptPageException(targetPage);
}
...
}
Redirect đến một trang wicket, sử dụng client-chuyển hướng (HTTP 302, của trình duyệt thay đổi URL):
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.request.mapper.parameter.PageParameters;
...
throw new RestartResponseException(
TargetWicketPage.class,
new PageParameters().set("param1", "value1"));
Redirect đến một trang wicket, sử dụng chuyển hướng máy chủ/về phía trước (URL của trình duyệt vẫn không thay đổi):
Kể từ Wicket 1.5RC5.1:
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.request.handler.PageProvider;
import org.apache.wicket.request.handler.RenderPageRequestHandler.RedirectPolicy;
import org.apache.wicket.request.mapper.parameter.PageParameters;
...
throw new RestartResponseException(
new PageProvider(
TargetWicketPage.class,
new PageParameters().set("param1", "value1")),
RedirectPolicy.NEVER_REDIRECT));
Trước Wicket 1.5RC5.1:
import org.apache.wicket.request.RequestHandlerStack.ReplaceHandlerException;
import org.apache.wicket.request.handler.PageProvider;
import org.apache.wicket.request.handler.RenderPageRequestHandler;
import org.apache.wicket.request.handler.RenderPageRequestHandler.RedirectPolicy;
import org.apache.wicket.request.mapper.parameter.PageParameters;
...
throw new ReplaceHandlerException(
new RenderPageRequestHandler(
new PageProvider(
TargetWicketPage.class,
new PageParameters().set("param1", "value1")),
RedirectPolicy.NEVER_REDIRECT),
true);
Redirect đến một URL, sử dụng HTTP 302 ("Đã tạm thời dời"):
import org.apache.wicket.request.flow.RedirectToUrlException;
...
throw new RedirectToUrlException("http://targetURL");
Redirect đến một URL, sử dụng HTTP 301 ("Moved Permanently", SEO thân thiện):
import org.apache.wicket.request.flow.RedirectToUrlException;
import javax.servlet.http.HttpServletResponse;
...
throw new RedirectToUrlException("http://targetURL",
HttpServletResponse.SC_MOVED_PERMANENTLY);
tôi chỉ tìm thấy
getRequestCycle().setResponsePage(MyOtherPage.class);
mà là làm việc ít nhất là trong wicket 6. Nó hoạt động server-side và viết lại URL quá. Có thể nó nhanh hơn một chút so với sử dụng một ngoại lệ.
- 1. Wicket: chuyển hướng đến trang wicket bằng cách sử dụng setResponsePage
- 2. Tạo Trang WordPress chuyển hướng đến một URL khác
- 3. Cách chuyển hướng đến trang khác sau 5 phút?
- 4. Chuyển hướng một trang http đến https
- 5. Cách điều hướng đến một trang khác với JavaScript
- 6. tự động chuyển hướng đến một trang
- 7. Cách chuyển hướng đến cùng một trang trong PHP
- 8. Làm thế nào tôi có thể chuyển hướng một trang php đến một trang php khác?
- 9. Chuyển hướng một trang sang một trang khác trong 5 giây sau đó chuyển hướng lại
- 10. tuyến chuyển hướng đến một số khác
- 11. htaccess chuyển hướng tất cả các trang đến một trang
- 12. Cách điều hướng một trang đến một trang khác trong điện thoại android?
- 13. Cách chuyển hướng đến một trang web khác trong Spring MVC JavaEE
- 14. Cách chuyển hướng người dùng đến một trang khác nếu họ không đăng nhập? (ring/compojure)
- 15. Cách chuyển hướng đến một trang khác với mục jQuery Autocomplete, hãy nhấp vào
- 16. Cách chuyển hướng trang web đến một vị trí khác trong IIS7
- 17. ASP.net Chuyển hướng đến trang gọi
- 18. .htaccess chuyển hướng đến trang 404 RewriteRule
- 19. ASP.NET MVC 3 - chuyển hướng đến một hành động khác
- 20. chuyển hướng đến cùng một trang để neo
- 21. Cách chuyển hướng đến trang trước trong Ruby On Rails?
- 22. mod_rewrite chuyển hướng một tên miền đến một URL khác
- 23. cách dừng chuyển hướng trang
- 24. ASP.Net MVC 3.0 Ajax.BeginForm đang chuyển hướng đến một Trang?
- 25. Chuyển hướng từ trang vải Facebook đến trang web
- 26. Chuyển hướng điều hướng JSF đến trang trước
- 27. Gửi Biểu mẫu Google cũ rồi chuyển hướng đến một trang khác
- 28. Cách chuyển hướng 301 tất cả các trang đến cùng một trang trên tên miền mới
- 29. PHP - Hiển thị Lỗi 404 mà không chuyển hướng đến một trang khác
- 30. Jquery di động: chuyển hướng đến một trang khác trước khi tải
Xin lỗi, tôi không hiểu ý của bạn là "tiếp tục cuối cùng tại trang hiện tại". Bạn có thể vui lòng xây dựng một chút? Cảm ơn trước. – Mot
@mklhmnn: Tôi đã thêm một số ghi chú về cách sử dụng phổ biến và một chút về cách hoạt động của nó.Đó là phức tạp, vì vậy tôi không chắc chắn bao nhiêu điều này sẽ giúp. –
Cảm ơn bạn đã giải thích chi tiết. – Mot