Запретить DataView извлекать старые данные после их обновления - PullRequest
0 голосов
/ 12 января 2012

У меня были некоторые проблемы с 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 () уже установил список в нуль, но почему это не влияет на провайдера в моем dataview?

1 Ответ

0 голосов
/ 12 января 2012

Выглядит нормально для меня.

Имеет ли projectLogic доступ к БД каждый раз?Вы поставили точку останова на getData ()?

...