Калитка 9.0 не может понять, как перенаправить на другую страницу

#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);
    }
}