#java #spring-boot #wicket
Вопрос:
Как перенаправить на другую страницу калитки с помощью метода onEvent(строковое событие)?
Все, что я пробовал, закомментировано, пока ничего не работает, пробовал монтировать страницы методом 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);
}
}
Ответ №1:
Через некоторое время я понял, что это проблема с авторизацией и что перенаправление работает в соответствии с этим кодом (я использовал другую роль, чем была определена на HomePage.java.
то есть
@AuthorizeInstantiation(«ПОЛЬЗОВАТЕЛЬ»), но роль после подписания была @AuthorizeInstantiation(«АДМИНИСТРАТОР»))
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);
}
}