Wicket 9.0 无法弄清楚如何重定向到其他页面
Wicket 9.0 can't figure out how to redirect to other page
如何从 onEvent(String event) 方法重定向到其他 wicket 页面?
我尝试过的所有内容都被注释掉了,到目前为止似乎没有任何效果,尝试使用 mountPage 方法安装页面,但没有任何变化。事件是否可以从 ajaxBehavior 重定向到其他页面?
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.request.cycle.RequestCycle;
public class SignInPage extends WebPage {
private String username;
private String password;
public SignInPage() {
TextField<String> username = new TextField<>("username");
TextField<String> password = new TextField<>("password");
Button button = new Button("button");
AjaxEventBehavior onClick = new AjaxEventBehavior("click") {
@Override
protected void onEvent(AjaxRequestTarget ajaxRequestTarget) {
System.out.println("inside on event");
RequestCycle res = RequestCycle.get();
res.setResponsePage(HomePage.class);
RequestCycle.get().getRequestHandlerScheduledAfterCurrent().respond(res);
//return new RenderPageRequestHandler(new PageProvider(HomePage.class), RenderPageRequestHandler.RedirectPolicy.ALWAYS_REDIRECT);
//getRequestCycle().setResponsePage(HomePage.class);
//getRequestCycle().getRequestHandlerScheduledAfterCurrent().respond(getRequestCycle());
//setRedirect// not available
//getRequestCycle().setRdirect()// not available
//getRequestCycle().setResponsePage(HomePage.class);//setResponsePage(HomePage.class);
/* redirectToInterceptPage(new HomePage());
ajaxRequestTarget.respond(getRequestCycle());*/
}
};
button.add(onClick);
add(username);
add(password);
add(button);
}
}
一段时间后,我意识到这是授权问题,并且重定向按照此代码工作(我使用了与 HomePage.java 上定义的角色不同的角色。
即
@AuthorizeInstantiation("USER"), but the role after signing was
@AuthorizeInstantiation("ADMIN"))
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.request.cycle.RequestCycle;
public class SignInPage extends WebPage {
private String username;
private String password;
public SignInPage() {
TextField<String> username = new TextField<>("username");
TextField<String> password = new TextField<>("password");
Button button = new Button("button");
AjaxEventBehavior onClick = new AjaxEventBehavior("click") {
@Override
protected void onEvent(AjaxRequestTarget ajaxRequestTarget) {
System.out.println("inside on event");
setResponsePage(HomePage.class);
}
};
button.add(onClick);
add(username);
add(password);
add(button);
}
}
如何从 onEvent(String event) 方法重定向到其他 wicket 页面?
我尝试过的所有内容都被注释掉了,到目前为止似乎没有任何效果,尝试使用 mountPage 方法安装页面,但没有任何变化。事件是否可以从 ajaxBehavior 重定向到其他页面?
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.request.cycle.RequestCycle;
public class SignInPage extends WebPage {
private String username;
private String password;
public SignInPage() {
TextField<String> username = new TextField<>("username");
TextField<String> password = new TextField<>("password");
Button button = new Button("button");
AjaxEventBehavior onClick = new AjaxEventBehavior("click") {
@Override
protected void onEvent(AjaxRequestTarget ajaxRequestTarget) {
System.out.println("inside on event");
RequestCycle res = RequestCycle.get();
res.setResponsePage(HomePage.class);
RequestCycle.get().getRequestHandlerScheduledAfterCurrent().respond(res);
//return new RenderPageRequestHandler(new PageProvider(HomePage.class), RenderPageRequestHandler.RedirectPolicy.ALWAYS_REDIRECT);
//getRequestCycle().setResponsePage(HomePage.class);
//getRequestCycle().getRequestHandlerScheduledAfterCurrent().respond(getRequestCycle());
//setRedirect// not available
//getRequestCycle().setRdirect()// not available
//getRequestCycle().setResponsePage(HomePage.class);//setResponsePage(HomePage.class);
/* redirectToInterceptPage(new HomePage());
ajaxRequestTarget.respond(getRequestCycle());*/
}
};
button.add(onClick);
add(username);
add(password);
add(button);
}
}
一段时间后,我意识到这是授权问题,并且重定向按照此代码工作(我使用了与 HomePage.java 上定义的角色不同的角色。
即
@AuthorizeInstantiation("USER"), but the role after signing was @AuthorizeInstantiation("ADMIN"))
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.request.cycle.RequestCycle;
public class SignInPage extends WebPage {
private String username;
private String password;
public SignInPage() {
TextField<String> username = new TextField<>("username");
TextField<String> password = new TextField<>("password");
Button button = new Button("button");
AjaxEventBehavior onClick = new AjaxEventBehavior("click") {
@Override
protected void onEvent(AjaxRequestTarget ajaxRequestTarget) {
System.out.println("inside on event");
setResponsePage(HomePage.class);
}
};
button.add(onClick);
add(username);
add(password);
add(button);
}
}