Consider a Wicket WebPage that redirects to another page (based on some logic omitted from here):
public class SomePage extends WebPage {
public SomePage(PageParameters parameters) {
setResponsePage(AnotherPage.class);
setRedirect(true);
}
}
I need to pass on the PageParameters to that other page, and this seems to be the way to do that:
setResponsePage(new AnotherPage(parameters));
However, when creating a new Page object like this, I end up at an URL such as /?wicket:interface=:1::::
instead of the clean /another
. AnotherPage is defined as:
@MountPath(path = "another")
public class AnotherPage extends WebPage {
// ...
}
(Where MountPath is from org.wicketstuff.annotation.mount package.)
So, my questions are:
Heh, turns out any of the suggested approaches work, and also what I originally tried — setResponsePage(new AnotherPage(parameters))
— as long as I remove setRedirect(true)
. The URL does stay the same (path to SomePage) in that case, and I just realised I really should have mentioned right from the start that it's okay if it does (as long as it's "pretty" and the parameters are passed)!
The page ("SomePage") dispatches requests, based on query params, to a couple of possible result pages that look different but that are accessed through the same url. I tried to formulate the question as generic and minimalist as possible, but that went awry as I left out relevant info. :-/
Sorry if this ended up weird, unclear or useless for others. If you have a suggestion about renaming it, feel free to comment.
seanizer has the right idea, but just for completeness, there are more options than BookmarkablePageRequestTargetUrlCodingStrategy
and HybridUrlCodingStrategy
: