2011-10-22 16 views
6
public interface Person { 
    String getName(); 
    void setName(String name); 
    List<PersonFriend> getFriends(); 
} 

public interface PersonFriend { 
    String getName(); 
} 

मैं Person के लिए केवल-दृश्य संपादक को लागू करने की कोशिश कर रहा हूँ:GWT सूची संपादक बाध्यकारी

public class PersonViewEditor extends Composite implements Editor<Person> { 
    private static PersonViewEditorUiBinder uiBinder = GWT.create(PersonViewEditorUiBinder.class); 
    interface PersonViewEditorUiBinder extends UiBinder<Widget, PersonViewEditor> {} 

    @UiField Label nameEditor; 
    @UiField PersonFriendsViewEditor friendsEditor; 

    @UiField FancyAnchor editAnchor; 

    public PersonViewEditor(ClientFactory clientFactory) { 
     initWidget(uiBinder.createAndBindUi(this)); 
     editAnchor.setPlace(
       clientFactory.getPlaceHistoryMapper(), 
       clientFactory.getPlaceController(), 
       new EditPersonPlace()); 
    } 
} 

public class PersonFriendsViewEditor extends Composite { 
    private static PersonFriendsViewEditorUiBinder uiBinder = GWT.create(PersonFriendsViewEditorUiBinder.class); 
    interface PersonFriendsViewEditorUiBinder extends UiBinder<Widget, PersonFriendsViewEditor> {} 

    interface Driver extends SimpleBeanEditorDriver<List<PersonFriend>, ListEditor<PersonFriend, PersonFriendViewEditor>> {} 

    private class PersonFriendViewEditorSource extends EditorSource<PersonFriendViewEditor> { 
     @Override 
     public PersonFriendViewEditor create(int index) { 
      PersonFriendViewEditor friend = new PersonFriendViewEditor(); 
      containerPanel.insert(friend, index);  
      return friend; 
     }  
    } 

    @UiField HorizontalPanel containerPanel; 

    public PersonFriendsViewEditor() { 
     initWidget(uiBinder.createAndBindUi(this));  
     Driver driver = GWT.create(Driver.class); 
     ListEditor<PersonFriend, PersonFriendViewEditor> editor = ListEditor.of(new PersonFriendViewEditorSource()); 
     driver.initialize(editor); 
    } 
} 

जब मैं PersonViewEditor को Person वस्तु बाँध, friendsEditor व्यक्ति के मित्रों की सूची के लिए बाध्य नहीं किया जाता। ऐसा लगता है कि PersonFriendsViewEditor को कुछ जादू इंटरफेस को लागू करना चाहिए ताकि जीडब्ल्यूटी इसके साथ बातचीत कर सके, लेकिन मुझे कोई संबंधित दस्तावेज़ नहीं मिल रहा है। जीडब्ल्यूटी में dynatablerf उदाहरण है, लेकिन वे स्पष्ट रूप से अपने सूची संपादक को बाध्य करते हैं और मैं इसे "बाहरी" ऑब्जेक्ट के हिस्से के रूप में बाध्य करने के बारे में उत्सुक हूं, इसलिए मैं Person से PersonViewEditor पर बांधता हूं और इसमें सभी डेटा/सभी विजेट सेट होते हैं।

कोई विचार?

उत्तर

3

PersonFriendsViewEditor को IsEditor<ListEditor<PersonFriend, PersonFriendViewEditor>> लागू करना चाहिए - जिसने इस मुद्दे को हल किया।

+3

इसके अलावा, PersonFriendsViewEditor.Driver गड़बड़ की चीजों की संभावना है। –

संबंधित मुद्दे