Wicket:什么 link 用于操作 + 重定向到当前页面

Wicket: what link to use for action + redirect to current page

虽然我已经使用 Wicket 几年了,但我仍然不明白在这种情况下要使用什么 link 组件:

我想展示一个无状态的可添加书签的页面,其中列出了数据库中的几个条目,这些条目是通过可添加书签的页面的几个页面参数查询的。这些条目中的每一个都应该是可删除的(带有一个普通的确认对话框)。确认模式 "Are you sure to delete this item" 对话框后,它应该重定向到相同的无状态可收藏页面,因此相同的页面参数导致再次查询数据库,现在显示删除后的条目。

我用 ListDataProvider 创建了一个 DataView 组件来显示条目。删除 link 是这样创建的:

... new ListDataProvider<>(entries) {
public void populateItem(Item<MyEntry> item) {
    final MyEntry entry = item.getModelObject();
    ...


    item.add(new Link<Long>("delete", Model.of(entry.getId())) {
        public void onClick() {
          // todo: delete
          System.out.println("delete " + getModelObject().longValue());
          getRequestCycle().setResponsePage(MyPage.class, getPageParameters());
        }
    }
    ...
}

不幸的是,页面版本号随着每次 "Delete" 点击而增加。

如果页面在 url 中已经有 pageId,那么首先它不是无状态的。

在您的情况下,您要求 StatelessLink。但是您必须确保您没有在页面中使用任何其他有状态组件。您可以使用 wicket-devutils 的 StatelessChecker 侦听器来查找其他有状态的内容。