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
侦听器来查找其他有状态的内容。
虽然我已经使用 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
侦听器来查找其他有状态的内容。