防止DataView在更新后检索旧数据

时间:2012-01-12 13:22:45

标签: java wicket

我一直在使用DataView来解决旧数据集的问题。即使页面已重新加载,IDataProvider也从未更新到数据库的当前状态。以下是我的IDataProvider的样子:

   private class MyDataProvider implements IDataProvider<Item> {

    private List<Item> list;

    private List<Item> getData() {
        if(list == null) {
            list = projectLogic.getItems();
            Collections.reverse(list);
        }
        return list;
    }


    @Override
    public Iterator<Item> iterator(int first, int count){
        return getData().subList(first, first + count).iterator();
    }

    @Override
    public int size(){
        return getData().size();
    }

    @Override
    public IModel<Item> model(Item object){
        return new DetachableItemModel(object);
    }

    /**
     * Detaches model after use. This is generally used to null out transient references that can be re-attached later. 
     */
    @Override
    public void detach(){
        list = null;
    }

}

detach()已经将列表设置为null但为什么这不会影响我的数据视图中的提供程序?

1 个答案:

答案 0 :(得分:0)

对我来说很好。

projectLogic每次都访问数据库吗?你在getData()上放了一个断点吗?