loadableDetachableModelを使用していくつかのコンポーネントを表示していますが、loadメソッドでwebserviceを呼び出して初めて必要なデータを取得しています。しかし、ユーザーはそのモデルに挿入や削除などの操作を行います。だから私は初めてのこと以外はそのウェブサービスに電話したくない。Apache WicketでLoadableDetachableModelを編集する方法
だからコードは次のようであること:
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;
}};
あなたは私のために何か提案はありますか?これはページとセッションのシリアル化中にページツリーであなたのモデルオブジェクトのTを維持すること
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();
}
注:感謝
私はちょっと混乱しています。「LoadableDetachableModel」はまさにあなたが望むものと思われます。あなたの好きなものではないのはどんな振る舞いですか? – WiseTree
loadableetachablemodelが必要なときはいつでも、私はmyService.getMyMethod()の結果を得るためにloadメソッドを呼び出します。この場合、そのモデルから「追加」および「削除」されたオブジェクトが失われていましたが、変更されたリストはmyService.getMyMethod()の結果に置き換えられました。とにかく、@ svenmeierが提案した解決策は、私のためにうまくいった。ありがとう – Bilguun