我想做的是一个简单的页面,它获取一个参数,该参数是对象的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 安全支持,包括扩展 MainApplication 中的 getSignInPageClass() AuthenticatedWebApplication.
问题是当我需要在使用原始参数授权后返回我的IndexPage时。我得到了一些解决方案,但我需要它更优雅、更常见(通用)。
- 重写 Application 类中的 restartResponseAtSignInPage() 方法
从RequestCycle中检索参数:
final Request request = RequestCycle.get().getRequest(); PageParametersEncoder encoder = new PageParametersEncoder(); PageParameters parameters = encoder.decodePageParameters(request.getUrl());
通过抛出new RestartResponseAtInterceptPageException(getSignInPageClass(), newParameters);来传递它们
我知道这不是一个很好的解决方案,因为我需要确定我的网址中参数的确切索引是什么(编码器仅返回indexedParameters,而不返回namedParameters - 或者我做错了什么?)。
也许有人以前遇到过这个问题?
最佳答案
在您的 Siginpage 中,验证登录后,调用 continueToOriginalDestination();
这应该可以解决问题。
关于java - Wicket - 通过 LoginPage 传递页面参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15924410/