2012-05-26 14 views
5

: ileKüme nasıl düzenlenir <? EntityProxy> GWT Editor çerçevesini genişletir? Basitlik uğruna

public class Person 
{ 
    String name; 
    Set<Address> addresses; 
} 

public class Address 
{ 
    String city; 
    String street; 
} 

ve

public interface PersonProxy extends EntityProxy 
{ 
    public String getName(); 
    public Set<AdressProxy> getAddresses(); 
} 

ve

public interface AdressProxy extends EntityProxy 
{ 
    public String getCity(); 
    public String getStreet(); 
} 

eşleşen Ben temize ListEditor nasıl kullanılacağını bana AddressProxy düzenlemek için UiBuinder sınıfları var ve Listem var ancak veriler Kişi sınıfı 'da ayarlanmışsa bunları düzenlemek için Editör Çerçevesini nasıl kullanabilirim? Veya SetProxy olduğunda Set for List'e nasıl dönüştürebilirim?

Bir Listesine LeafValueEditor.setValue() hamlenin içine sonra

LeafValueEditor<Set<AddressProxy>> 

ve gerçekleştireceği adaptör Editör sınıfının bir tür koymak ve yeni bir driver.edit başlatmak için bir girişim yaptılar() üzerinde Liste düzenleme ile ilgilenen ancak şimdi şansla birlikte olan ayrı bir Editör hiyerarşisi.

cevap

6

Bir ListEditor benzer bir CompositeEditor<Set<AddressProxy>, AddressProxy, AddressEditor>, oluşturmalısınız ancak List yerine Set taşıma. Sanırım bir şekilde ListEditor 'a yetki verebilirsiniz, ancak emin değilim.

+0

teşekkürler! Bu başlamak için bir şey. Açıkçası bana biraz kod bir bağlantı için ümit ediyorum :-). –

+1

Ben standart 'SetEditor' çeşit GWT tarafından sağlanmalıdır (muhtemelen ListEditor'' için temsilci seçme) düşünüyorum. Ben OP ile aynı sorun vardı ve sadece 'ListEditor' kullanabilmek için etki alanı sınıfı (gerçek' Set'-daktilo özelliğini dönüştürme) 'list 'yazılan erişimcileri açığa sona erdi. Ama, –

+2

problem) tanım gereği Set bir ille değerler için belirli bir düzen ve alt editörleri olan bir _list_ olmasıdır (bazen sadece istemci tarafında 'Set'-bilge davranış gerekir) yapmak her zaman mümkün değildir ve b) muhtemelen düzenleme sırasında yinelenen değerlere izin vermek ve sadece _flush_ anda benzersizliğini kontrol etmek istiyorum, ama bu durumda hey, 4 değerleri vardı ve ben kaydedildiğinde sadece 3 tutulması "(ne zaman nasılsa kullanıcıyı anlatmak zorunda onların! "); ve teklik, düzenlenmiş nesnelerde 'equals() 'nasıl uyguladığınıza bağlıdır. Ancak bir _standard_ 'SetEditor' ile gelebilirseniz, o zaman lütfen katkıda bulunun! –

3

Ben Noktalar ve Rotaları (bir Rota N Points içerir) ile yaptık:

Rota (Kompozit):

@UiField 
TextBox name; 

@Ignore 
@UiField 
FlexTable listPoints; 

PointsEditor pointsEditor = new PointsEditor(); 

    .... 

pointsEditor.add(String id); 

PointsEditor:

public class PointsEditor implements HasRequestContext<List<PointProxy>>, ValueAwareEditor<List<PointProxy>> { 

    List<PointProxy> points = new ArrayList<PointProxy>(); 

    public void add(String id) { 
     PointProxy point = ctx.create(PointProxy.class); 
     point.setId(id); 
     points.add(point);   
    } 

Rota (sunucu tarafı):

@Embedded 
private List<Point> points = new ArrayList<Point>(); 

Rout eProxy

public interface RouteProxy extends EntityProxy { 

     abstract List<PointProxy> getPoints(); 

     abstract void setPoints(List<PointProxy> points); 

PointProxy

public interface PointProxy extends ValueProxy { 

... 

} 
+0

Ben ne demek istediğini anlıyorum ama soru: Ben noktalar bağlamak nasıl PointProxy çeşitli alanlar ve kendini bir Editör vardır göz önüne alındığında?Ve Set Liste liste düzenleme ile ilgili dikkat, GWT SDK ve ilgili örnek kod içinde yardım sınıfı verilen önemsiz değerdir. –

+0

RouteProxy (EntityProxy) ve PointProxy (ValueProxy) öğesini belirtin. Her ikisi de cevaba eklenmiştir. Sadece listenin yerine Set ile yapmaya çalışın. –