我想要做的是一个简单的页面,它获取一个参数,它是一个对象的id。
@MountPath("share/${share_id}")
public class IndexPage extends WebPage
{
public IndexPage(PageParameters parameters)
{
String id = parameters.get("share_id").toString();
// etc...
}
}
此页面必须防止未经授权的访问。我添加了@AuthorizeInstantiation("user")注释和托管标准 Wicket 安全支持,包括扩展AuthenticatedWebApplication的MainApplication中的getSignInPageClass()。
问题是当我需要在使用原始参数授权后返回我的IndexPage时。我得到了一些解决方案,但我需要它更优雅、更常见(通用)。
- 覆盖Application 类中的restartResponseAtSignInPage()方法
从RequestCycle检索参数:
final Request request = RequestCycle.get().getRequest(); PageParametersEncoder encoder = new PageParametersEncoder(); PageParameters parameters = encoder.decodePageParameters(request.getUrl());
通过抛出new RestartResponseAtInterceptPageException(getSignInPageClass(), newParameters);来传递它们
我知道这不是一个好的解决方案,因为我需要确定我的 url 中参数的确切索引是什么(编码器只返回 indexedParameters,而不是 namedParameters - 或者我做错了什么?)。
也许有人以前遇到过这个问题?