小门工具Flash重定向

时间:2019-08-30 09:59:38

标签: wicket wicket-6

我想执行类似Flash重定向的操作(不确定是否真的称为Flash重定向)。

在执行某些操作(如删除设备)后,我将重定向到设备列表页面。

现在,对于重定向URL ...我要附加&sdr=true,它可以正常工作。

问题是...即使刷新页面后,参数(&sdr=true)仍然存在。

如果我没记错的话,当我执行Flash刷新时...该参数会保留在那里,但在刷新时会消失...或者仅适合一次刷新。

以下是我的重定向方法:

public static void redirect(String redirectUrl) {
    throw new RedirectToUrlException(redirectUrl);
}

现在,如何在检票口中实现Flash重定向?我正在使用wicket 6版本。

或者...我希望参数&sdr=true仅对1个请求有效。刷新或重新加载页面后,它应该消失了。

谢谢:)

对不起,如果这个问题很简单,我真的对wicket很陌生

1 个答案:

答案 0 :(得分:1)

可能还有另一种解决您问题的方法。

Wicket可能是有状态的,即它可以在页面导航之间保持状态。因此,您可以这样做:

setResponsePage(new SomePage(someState));

这样,无需在url中传递任何内容,SomePage的构造函数可以决定如何处理传递的状态。

如果您希望在网址中添加请求参数,则可以使用

PageParameters params = new PageParameters();
params.put("sdr", "true");
setResponsePage(SomePage.class, params);

在SomePage的构造函数中,您需要从传递的PageParameters中删除sdr参数,以使其不会呈现在页面内的所有url中,例如在链接,表单操作等中 但是,如果您希望参数在页面刷新/重新加载时消失,那么您将需要进行另一个重定向:

public SomePage(PageParameters params) {
   super(params);

   StringValue srdValue = params.get("srd");
   if (!srdValue.isNull()) {
      params.remove("srd");

      // do something custom

      throw new RestartResponseException(this);
      // or throw new RestartResponseException(getPageClass(), params);
   }


}