Java Wicket:可变ListView/DataView中的链接

Java Wicket:可变ListView/DataView中的链接,java,wicket,Java,Wicket,假设我有一组需要在表/列表中显示的项目。该集合是高度可变的,因为后台作业和其他用户访问相同的数据 现在,结果输出必须包含触发底层数据操作的链接。这些操作可能会从集合中删除项目,但并不总是这样做 因为ListView的模型(我现在不太确定DataView)是基于索引的,所以在这种情况下它肯定会失败。当我单击指向错误对象的链接时,会出现错误,因为基础列表的顺序或大小已更改 所以我需要的是链接,总是指向他们应该操作的对象的自然ID。当链接呈现给用户时,我希望该呈现链接始终引用同一对象,无论渲染时使用的

假设我有一组需要在表/列表中显示的项目。该集合是高度可变的,因为后台作业和其他用户访问相同的数据

现在,结果输出必须包含触发底层数据操作的链接。这些操作可能会从集合中删除项目,但并不总是这样做

因为ListView的模型(我现在不太确定DataView)是基于索引的,所以在这种情况下它肯定会失败。当我单击指向错误对象的链接时,会出现错误,因为基础列表的顺序或大小已更改

所以我需要的是链接,总是指向他们应该操作的对象的自然ID。当链接呈现给用户时,我希望该呈现链接始终引用同一对象,无论渲染时使用的集合发生什么情况

想到的最简单的解决方案是使用只包含操作和id的无状态链接,将用户引导到另一个页面。但这有一个明显的缺点,就是我首先失去了组件系统提供的所有好处


您将如何解决此问题?

DataView是基于非索引的,请参阅IDataProvider#model(),这样您就非常接近正确答案了。

您能给我们展示一些fialing代码吗?当您将数据保存在列表模型中,并将链接数据保存在listitems模型中时,如果某些索引失败,这应该无关紧要。如果您只是在listitems模型中存储一个索引并尝试重新访问数据,这将很重要,但这在任何地方都是一个问题,而不仅仅是在wicket和/或java中。