考虑一个Wicket WebPage,它基于某些逻辑(此处省略)重定向到另一个页面:
然而,当像这样创建一个新的Page对象时,我最终会到达一个类似于
public class SomePage extends WebPage {
public SomePage(PageParameters parameters) {
setResponsePage(AnotherPage.class);
setRedirect(true);
}
}
我需要将PageParameters传递到另一个页面,这似乎是实现此目的的方式:
setResponsePage(new AnotherPage(parameters));
然而,当像这样创建一个新的Page对象时,我最终会到达一个类似于
/?wicket:interface=:1::::
的URL,而不是干净的/another
。 AnotherPage的定义如下:@MountPath(path = "another")
public class AnotherPage extends WebPage {
// ...
}
(其中MountPath来自org.wicketstuff.annotation.mount包。)
所以,我的问题是:
- 有其他传递参数的方式吗?
- 有什么方法可以保持URL的美观性?上述限制是否是Wicket Stuff特定的限制而不是核心Wicket?
更新
嘿,事实证明,任何建议的方法都有效,而且我最初尝试的setResponsePage(new AnotherPage(parameters))
也有效,只要我删除setRedirect(true)
。在这种情况下,URL确实保持不变(指向SomePage的路径),并且我刚刚意识到,如果它能够“漂亮”地传递参数,那么即使URL保持不变也没关系!
该页面(“SomePage”)根据查询参数分派请求到几个可能看起来不同但通过相同URL访问的结果页面。我试图将问题尽可能通用和简约地表达,但由于我遗漏了相关信息,导致出现了问题。:-/
如果这个问题对别人来说很奇怪、不清楚或者没有用,请原谅。如果您对重命名有建议,请随时评论。