我想执行类似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很陌生
答案 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);
}
}