如何在 Apache Wicket 中编辑 LoadableDetachableModel

How to edit LoadableDetachableModel in 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;
}};

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

许多项目对此用例使用自定义实现:

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