我正在使用loadableDetachableModel来显示一些组件,它通过在load方法中调用webservice来获取我想要的第一个数据。但是用户会执行一些操作,例如插入或删除该模型。所以我不想第一次打电话给那个网络服务。
所以代码如下:
myLoadableDetachablModel = new LoadableDetachableModel<List<MyType>>() {
private static final long serialVersionUID = 1L;
@Override
protected List<MyType> load() {
// I don't want to touch DB except very first time
List<MyType> neededObjects = myService.getMyMethod();
return neededObjects;
}};
你对我有什么建议吗?感谢
答案 0 :(得分:3)
许多项目将此自定义实现用于此用例:
public abstract class InitializingModel<T> extends AbstractReadOnlyModel<T> {
private boolean initialized;
private T t;
public T getObject() {
if (initialized == false) {
t = init();
initialized = true;
}
return t;
}
protected abstract T init();
}
请注意,这会在页面和会话序列化期间将模型对象T保留在页面树中。