如何编辑Apache Wicket中的LoadableDetachableModel

时间:2016-07-29 14:29:37

标签: java apache wicket

我正在使用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;
}};

你对我有什么建议吗?感谢

1 个答案:

答案 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保留在页面树中。