【问题标题】:Wicket 9.0 can't figure out how to redirect to other pageWicket 9.0 无法确定如何重定向到其他页面
【发布时间】:2021-08-27 00:25:57
【问题描述】:

如何从 onEvent(String event) 方法重定向到其他检票口页面?

我尝试过的所有内容都被注释掉了,到目前为止似乎没有任何效果,尝试使用 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);
    }
}

【问题讨论】:

    标签: java spring-boot wicket


    【解决方案1】:

    一段时间后,我意识到这是授权问题,并且重定向按照此代码工作(我使用的角色与 HomePage.java 中定义的角色不同。

    @AuthorizeInstantiation("USER"),但是签名后的角色是 @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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 2012-03-16
      • 1970-01-01
      • 2018-07-10
      • 2018-03-11
      • 1970-01-01
      相关资源
      最近更新 更多