Mot*_*Mot 20 java redirect wicket
如何使用Wicket重定向到另一个页面?IIRC,必须在构造函数中抛出一些异常,但我不记得是哪一个.提前致谢.
Don*_*oby 29
RestartResponseAtInterceptPageException正如你在自己的回答中所指出的那样,投掷遗嘱会做到这一点,但这实际上是允许在当前页面(通常是授权过程的一部分)进行重定向的系统的一部分.如果那不是你的情况,但是你仍然需要做一些中断处理的事情,那么最好扔掉一个RestartResponseException.
我知道的主要用法RestartResponseAtInterceptPageException是"重定向到登录页面"过程.如果您正在使用基于角色的身份验证,则IAuthorizationStrategy确定您未登录的实现将发出已配置的信号IUnauthorizedComponentInstantiationListener,通常是AuthenticatedWebApplication如果您未登录则会引发此异常,并重定向到已配置的登录页面.(如果您已登录但未经授权,则会发生其他情况......).
实际的重定向由the完成PageMap,在这种情况下也会记住您尝试访问的页面.成功登录后,登录页面可以要求您通过调用将您发送到最初尝试的页面continueToOriginalDestination(),这是一个方法,Component并从中检索记住的页面PageMap.
这个身份验证过程有一些很好的示例代码,但异常和拦截在某种程度上隐藏在幕后.
sot*_*her 23
使用客户端重定向(HTTP 302,浏览器的URL更改)重定向到wicket页面:
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.request.mapper.parameter.PageParameters;
...
throw new RestartResponseException(
TargetWicketPage.class,
new PageParameters().set("param1", "value1"));
Run Code Online (Sandbox Code Playgroud)
使用服务器重定向/转发重定向到wicket页面(浏览器的URL保持不变):
自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));
Run Code Online (Sandbox Code Playgroud)
在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);
Run Code Online (Sandbox Code Playgroud)
使用HTTP 302("暂时移动")重定向到URL:
import org.apache.wicket.request.flow.RedirectToUrlException;
...
throw new RedirectToUrlException("http://targetURL");
Run Code Online (Sandbox Code Playgroud)
使用HTTP 301重定向到URL("永久移动",SEO友好):
import org.apache.wicket.request.flow.RedirectToUrlException;
import javax.servlet.http.HttpServletResponse;
...
throw new RedirectToUrlException("http://targetURL",
HttpServletResponse.SC_MOVED_PERMANENTLY);
Run Code Online (Sandbox Code Playgroud)
快速搜索*Exception.javawicket中的所有文件显示它.一个人必须扔一个RestartResponseAtInterceptPageException:
public MyPage() {
...
if (redirect) {
throw new RestartResponseAtInterceptPageException(targetPage);
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34885 次 |
| 最近记录: |