gpt4 book ai didi

java - 在 wicket 1.5.8 中强制页面过期

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:41 25 4
gpt4 key购买 nike

我正在尝试使用 Wicket 1.5.8 使给定页面的所有先前版本过期。在 wicket 1.4 中,它是由 getPage().getPageMap().clear() 完成的。现在在 wicket 1.5 中,页面 map 不见了,我不知道如何点它。

我的用例是我有一个向导 (http://www.wicket-library.com/wicket-examples/wizard/) 来创建/编辑一个实体。提交向导后,用户将被重定向到实体列表。在这一点上,我不希望用户能够使用浏览器后退按钮返回到向导的状态,因此想要使用向导使以前版本的页面过期(我正在使用 getPageSettings().setRecreateMountedPagesAfterExpiry(true); 所以当用户返回时如果页面过期,挂载的页面将以空白状态重新创建,这正是我想要的)。

环顾四周,我发现可以使用 Session.get().clear(); 从 Session 中删除所有页面(我不知道 1.4 版本是否删除了所有页面或只是用于访问 PageMap 的页面的所有版本——这对于多选项卡支持会更好)。但是,使用它只能部分起作用,因为最后一页没有过期。

假设向导挂载在/wizard,最后重定向到/list,流程将类似于:/wizard?1, /wizard?2, /wizard?3, /list.现在,当我使用后退按钮时,/wizard?3 没有过期,尽管 /wizard?1/wizard?2 符合预期. session 清除和发送到列表页面是在向导的onFinish 方法中完成的,如下所示:

@Override
public void onFinish() {
Session.get().clear();
Session.get().getFeedbackMessages().add(new FeedbackMessage(..));
setResponsePage(ListPage.class);
}

那么,回到问题本身:有人知道如何获得预期的行为,即过期 /wizard?3 吗?

谢谢

注意:ListPage 是一个可添加书签的页面,我也尝试使用 setResponsePage(new ListPage());


根据 Andrea 的建议更新我最终所做的

需要注意的是,我的应用程序使用了一个扩展 wicket 的 Session 的自定义 session 对象;我们称它为 AppSession

  1. AppSession 中,我添加了一个 boolean clearRequested 属性(默认为 false)
  2. AppSession 中,我添加了一个静态 void 方法 requestClear(),它只是在 session 中将 clearRequested 设置为 true 的快捷方式
  3. 在我的向导的 onFinish() 中,就在调用 setResponsePage 之前,我调用了 AppSession.requestClear()
  4. 最后,我只是将 RequestCycleListener 添加到我的应用程序中。

    getRequestCycleListeners.add(new AbstractRequestCycleListener() {
    @Override
    public void onBeginRequest(RequestCycle cycle) {
    super.onBeginRequest(cycle);
    AppSession session = AppSesssion.get();
    if (session.isClearRequested()) {
    session.clear();
    session.setClearRequested(false);
    }
    }
    });

现在每当我需要在操作后清除 session 以使页面过期时,我只需调用 AppSession.requestClear() 并在下一个请求中清除 session 。

最佳答案

您可以清除 ListPage 中的 session 。由于此页面是可 Collection 的,您可以向它传递一个页面参数,指示 ListPage 必须摆脱 session 中的页面。

关于java - 在 wicket 1.5.8 中强制页面过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12801761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com