Java ZK通知更改列表中的单个记录,而不是整个列表?
我有下面的代码,我只想通知列表中的单个项目,而不是整个列表,就像我们要通知整个列表一样,它将再次重新加载数据,这将消耗大量内存,看起来很难看。有谁知道提高应用程序性能的更好方法吗Java ZK通知更改列表中的单个记录,而不是整个列表?,java,zk,Java,Zk,我有下面的代码,我只想通知列表中的单个项目,而不是整个列表,就像我们要通知整个列表一样,它将再次重新加载数据,这将消耗大量内存,看起来很难看。有谁知道提高应用程序性能的更好方法吗 @Command public void valueChangedListnerForCombo( @BindingParam("Code") Combobox combobox, @BindingParam("BeanData") Record record,
@Command
public void valueChangedListnerForCombo(
@BindingParam("Code") Combobox combobox,
@BindingParam("BeanData") Record record,
@BindingParam("ColumnName") String columnName) {
super.valueChangedListnerForCombo(combobox, record, columnName);
if (!adminNewListModelList.contains(record) && !changedListModel.contains(record)){
changedListModel.add(record);
BindUtils.postNotifyChange(null, null, this , "adminListboxViewModel");
}
}
编辑:
可以按如下方式更改单个对象:
BindUtils.postNotifyChange(null, null, record, "*");
你的事业的结果:什么都没有。原因:因为您执行了
添加操作。如果是记录的更新
,则应能正常工作
您将对象添加到listModel中,这样listModel将被更改并得到通知。
如果只调用listmodel
,而不是从viewmodel
调用getter,通常会获得性能增益。(试着在对象的getter上设置一个记录器,看看调用了什么)
编辑2:
您的方法中有您的组合框。
尝试执行以下操作,而不是执行postNotifyChanged
combobox.invalidate();
这会将组合框设置为正确的基础模型,即您刚才更改的内容。我知道brother请检查我的问题,我必须通知单记录列表,而不是整个类或整个列表离开此部分或删除此部分changedListModel。添加(记录);随着adminNewListModelList中所做的更改以及ZUL中使用的更改,我必须通知该列表的单个记录,我尝试了BindUtils.postNotifyChange(null,null,record,“”);但是如果我在做BindUtils.postNotifyChange(null,null,adminNewListModelList,“”),它将不起作用;它正在工作,但我必须通知单记录,而不是整个列表。你知道我们可以这样做吗?就像我说的,当你改变记录的时候,结果什么都不是。通过对listmodel进行添加或删除操作,您必须对listmodel执行notifyChanged操作,通过更新列表中的记录,您可以通知对象本身。我不明白?“通过更新列表中的记录,您可以通知对象本身。”您想说我必须通知整个列表吗?实际上,对于添加或删除操作,您始终需要通知您的listmodel。有关记录的更新,请参见此
combobox.invalidate();