3

我们有两个挂载 URL 的页面(运行 Wicket 6.11)。当浏览器(尝试使用 Chromium)打开带有特定参数的页面 1 的 URL 时,构造函数会在会话中保存信息并重定向到页面 2(伪代码):

public Page1(Pageparameters parameters) {
    super(parameters);

    String value = parameters.get("magicProperty").toString();
    if (value != null && isValid(value)) {
       Serializable key = createKey(value);
       getSession().setAttribute("key", key);
       throw new RestartResponseException(Page2.class);
    }
}

在第 2 页结构中,我们想再次从会话中获取密钥:

public Page2(PageParameters parameters) {
    super(parameters);

    Serializable key = getSession().getAttribute("key");
    ...
}

问题是,当新打开浏览器时,key第 2 页是null- 看起来会话对象是为第 2 页新创建的。我该如何解决/解决这个问题?

4

1 回答 1

1

我不知道为什么,但在抛出之前,RestartResponseException我似乎需要调用session.bind()

public Page1(Pageparameters parameters) {
    super(parameters);

    String value = parameters.get("magicProperty").toString();
    if (value != null && isValid(value)) {
       Serializable key = createKey(value);
       Session session = getSession();
       session.setAttribute("key", key);
       session.bind();
       throw new RestartResponseException(Page2.class);
    }
}
于 2013-10-07T16:02:15.443 回答