Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wicket 将行添加到refreshingView而不重新绘制整个refreshingView_Wicket - Fatal编程技术网

Wicket 将行添加到refreshingView而不重新绘制整个refreshingView

Wicket 将行添加到refreshingView而不重新绘制整个refreshingView,wicket,Wicket,我们设置了一个refreshingView(包含在边框内),在refreshing视图之外,我们有一个ajaxLink,它将一个新的shirt对象添加到支持refreshingView的列表中。refreshingView包含文本字段和下拉列表,用户可以在其中输入有关衬衫的信息 在ajaxLink中,我们将衬衫添加到列表中,然后将整个边框添加到ajaxLink的目标,从而刷新边框。当您添加一行并填写信息(衬衫颜色、尺寸、样式等)并添加另一件衬衫时,就会出现问题。添加了新衬衫的另一行,但同时丢失了

我们设置了一个
refreshingView
(包含在边框内),在refreshing视图之外,我们有一个ajaxLink,它将一个新的shirt对象添加到支持refreshingView的列表中。refreshingView包含文本字段和下拉列表,用户可以在其中输入有关衬衫的信息

在ajaxLink中,我们将衬衫添加到列表中,然后将整个边框添加到ajaxLink的目标,从而刷新边框。当您添加一行并填写信息(衬衫颜色、尺寸、样式等)并添加另一件衬衫时,就会出现问题。添加了新衬衫的另一行,但同时丢失了输入的关于第一件衬衫的所有信息


关于如何保留以前输入的衬衫的信息,有什么想法吗

以前的数据丢失,因为每次渲染后,refreshingView都会丢弃所有项目(以及包含数据的模型)

您可以设置ItemReuseStategy:

refreshingView.setItemReuseStrategy(new ReuseIfModelsEqualStrategy());

另一种更复杂的方法是只重新绘制新添加的行。请参见此处的答案:

与其每次通过
new ReuseIfModelsEqualStrategy()
创建strategy类的新实例,不如使用
ReuseIfModelsEqualStrategy.getInstance()
,以便在应用程序曾经使用的所有RefreshingView对象之间共享同一实例。当然,ReuseIfModelQualstStrategy是不可变的和线程安全的,所以使用共享实例没有问题。