2016-07-29 2 views
0

Я использую loadableDetachableModel, чтобы показать некоторые компоненты, и он получает данные, которые я хотел в первый раз, вызывая метод webservice в режиме загрузки. Но пользователи выполняют некоторые операции, такие как вставка или удаление этой модели. Поэтому я не хочу называть этот веб-сервис, кроме первого раза.Как редактировать LoadableDetachableModel в Apache Wicket

Так код быть как:

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

Я немного смущен - 'LoadableDetachableModel', кажется, именно то, что вы хотите. Какое поведение это не то, что вам нравится? – WiseTree

+1

Всякий раз, когда требуется эта загружаемая модель, она вызывает метод загрузки, чтобы получить результат myService.getMyMethod(). В этом случае я терял «добавленные» и «удаленные» объекты из этой модели, измененный список заменялся результатом myService.getMyMethod(). Во всяком случае, решение, предложенное @svenmeier, отлично работало для меня. Спасибо – Bilguun

ответ

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 в дереве страниц во время сериализации страниц и сессий.

+0

Спасибо @svenmeier, это было решение, которое я искал. – Bilguun

+0

@svenmeier есть преимущество, чтобы делать это таким образом, в отличие от переопределения 'LoadableDetachableModel # detach()' не для отсоединения данных? – WiseTree

+0

IMHO переопределяет LDM, что затрудняет рассуждение о вашем коде. – svenmeier

Смежные вопросы