Java 防止DataView在更新旧数据后检索旧数据
我在DataView中遇到了一些问题,因为它总是检索旧的数据集。即使页面已重新加载,IDataProvider也从未更新到数据库的当前状态。以下是我的IDataProvider的外观:Java 防止DataView在更新旧数据后检索旧数据,java,wicket,Java,Wicket,我在DataView中遇到了一些问题,因为它总是检索旧的数据集。即使页面已重新加载,IDataProvider也从未更新到数据库的当前状态。以下是我的IDataProvider的外观: private class MyDataProvider implements IDataProvider<Item> { private List<Item> list; private List<Item> getData() {
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;
}
}
私有类MyDataProvider实现IDataProvider{
私人名单;
私有列表getData(){
if(list==null){
list=projectLogic.getItems();
收款。反向(列表);
}
退货清单;
}
@凌驾
公共迭代器迭代器(int-first,int-count){
返回getData().subList(first,first+count).iterator();
}
@凌驾
公共整数大小(){
返回getData().size();
}
@凌驾
公共IModel模型(项对象){
返回新的DetachableItemModel(对象);
}
/**
*使用后分离模型。这通常用于清空可在以后重新附加的临时引用。
*/
@凌驾
公共图书馆{
列表=空;
}
}
detach()已将列表设置为null,但为什么这不会影响我的dataview中的提供程序?看起来不错
projectLogic是否每次都访问数据库?您是否在getData()上设置了断点?我对其进行了测试,每次projectLogic都会访问数据库。“断点”是什么意思?