ウィケット:インデックス付きリストのIDataProvider / LoadableDetachableModelを実装する方法
質問
IDataProvider
とインデックス付きリストのためのWicketではLoadableDetachable
を実施するための最良の方法は何ですか?私はなアドレスはのリストを持っている顧客を持っていると仮定します。
class Customer {
List<Adress> adresses;
}
今私は、顧客のアドレスのデータプロバイダ/ LDMを実装したいです。
:私は次のように、通常の方法は、コンポーネントの顧客モデルを指し、内部クラスとしてIDataProvider
であると仮定します
class AdressDataProvider implements IDataProvider {
public Iterator iterator() {
Customer c = (Customer)Component.this.getModel(); // somehow get the customer model
return c.getAdresses().iterator();
}
public IModel model(Object o) {
Adress a = (Adress) o;
// Return an LDM which loads the adress by id.
return new AdressLoadableDetachableModel(a.getId());
}
}
質問:アドレスがIDを持っていない(例えば、それは休止埋め込み/ CollectionOfElementsだ)だけcustomer.adressesリストにそのインデックスによって識別することができたときにどのように私は、これを実装するのでしょうか?どのように私は所有するエンティティとインデックスへの参照を保持していますか?
は、実際には、私は解決策を知っているが、私はこれを行うための一般的なパターンがあるかどうか。
解決
あなたの提案された解決策は何ですか?あなたの質問は私には非常に明確でいないようです。アドレスは、Hibernateが遅延ロードされていますか?私は本当にあなたの問題は上記のコードであるものを見ることができません。 。あなたのアドレスがc.getAdresses上の休止状態()によってでロードされます場合は、イテレータを();呼び出し、あなたはアドレスを持っているし、問題は何ですか? customer.adressesは、実際にアドレスオブジェクト、または単にIDのリストですか? あなたはいつもAdressLoadableDetachableModelすなわち内部の所有エンティティとそれのインデックスを記録することができます AdressLoadableDetachableModel(a.getId()、(顧客)Component.this.getModel()) あなたは明確に助けることはできますか?