ZK NotifyChange列表中的单个记录不是整个列表吗?

时间:2014-05-08 12:54:58

标签: java zk

我有下面的代码我想NotiFy只有他列出的单个项目不是整个列表,好像我们将NotiFy整个列表它将重新加载数据,这消耗大量的内存,看起来很丑。任何人都知道更好的方法来提高性能应用

@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");
    }
}

1 个答案:

答案 0 :(得分:1)

编辑: 你可以像这样通知改变一个对象:

BindUtils.postNotifyChange(null, null, record, "*");

您的事业的结果:什么都没有。
原因:因为您执行add操作。如果它是update record,这将起作用。

您将对象添加到listModel,以便更改listModel并且必须得到通知。 如果您只拨打listmodel,而不是通过viewmodel拨打电话,那么您通常会获得性能提升。 (尝试在对象的getter上设置记录器并查看所有被调用的内容)

BindUtils.postNotifyChange(null, null, changedListModel, "*");

编辑2:

你的方法中有你的组合框 尝试执行以下操作而不是postNotifyChanged

combobox.invalidate();

这应该将组合框正确设置为基础模型,即刚刚更改的内容。