النصيبة: كيفية تنفيذ IDataProvider / LoadableDetachableModel لقوائم المفهرسة
سؤال
ما هي أفضل طريقة لتنفيذ IDataProvider
و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());
}
}
والسؤال: كيف لي أن تنفيذ ذلك، عندما لا يكون عنوان معرف (على سبيل المثال انها السبات مضمن / CollectionOfElements) ولكن لا يمكن تحديدها من قبل مؤشره في قائمة customer.adresses؟ كيف أحافظ على الإشارة إلى الكيان امتلاك والمؤشر؟
في الواقع، أنا أعرف الحل، ولكني أتساءل عما إذا كان هناك نمط مشترك للقيام بذلك.
المحلول
ما هو الحل المقترح؟ لا يبدو سؤالك واضحا تماما بالنسبة لي. هي عناوين تحميل بتكاسل من السبات؟ لا استطيع ان ارى حقا ما هي مشكلتك مع رمز أعلاه. إذا الحصول على تحميل العناوين الخاصة بك من قبل في السبات على c.getAdresses () مكرر ()؛ استدعاء، ثم لديك عناوين وما هي المشكلة؟ هو customer.adresses في الواقع قائمة الكائنات عنوان أو معرف فقط؟ يمكنك تسجيل دائما الكيان امتلاك ومؤشر انها داخل بك AdressLoadableDetachableModel أي AdressLoadableDetachableModel (a.getId ()، (العملاء) Component.this.getModel ()) يمكنك مساعدة في توضيح؟