IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GWT et Vaadin Java Discussion :

[JSON / GWT AutoBean] Comment récupérer une liste ?


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 12
    Par défaut [JSON / GWT AutoBean] Comment récupérer une liste ?
    Bonjour à tous,

    J'ai un souci, je n'arrive pas à récupérer les éléments de ma liste provenant d'un flux JSON en GWT.

    J'ai le code suivant pour récupérer ma liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            RequestBuilder rb = new RequestBuilder (RequestBuilder.GET, GWT.getHostPageBaseURL() + "rest/event/events" );
            rb.setCallback(new RequestCallback() {
     
                public void onResponseReceived(Request request, Response response) {
     
                    if (response.getStatusCode() == 200) {
                        EventListItf eventList = EventListJsonConverter.getInstance().deserializeFromJson(response.getText());
                        List<Event> events = eventList.getEvents();
                     }
                 }
    Je sais que "event" n'est pas nul events.getSize() = 3 ; Pourtant je n'ai rien quand je fais events.get(0) donc rien non plus pour events.get(0).getTitre() .
    response.getText() est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [{"id":1, "place":"Rennes","date":21122014},{"id":2, "place":"Quimper","date":15022015}]
    Mon interface EventListItf est de la forme suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import java.util.List;
     
    public interface EventListItf {
        void setEvents(List<Event> listEvents);
        List<Event> getEvents();
    }
    Ma classe EventList est de la forme suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import java.util.List;
     
    public class EventList implements EventListItf {
        private List<Event> events;
        public EventList() {}
        public List<Event> getEvents() {
            return events;
        }
        public void setEvents(List<Event> events) {
            this.events = events;
        }
    }
    Je ne comprend pas pourquoi cela ne marche pas.

    Est-ce quelqu'un aurait une idée ?

    Je vous remercie par avance.

  2. #2
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 12
    Par défaut
    J'ai trouvé la solution.
    Dans l'interface EventListItf il faut mettre eventItf et non event
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface EventListItf {
    	void setEvents(List<EventItf> listEvents);
    	List<EventItf> getEvents();
    }
    et le json converter est de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    public class EventListJsonConverter {
     
    	private EventListJsonConverter() {}
     
    	private static EventListJsonConverter instance = new EventListJsonConverter();
     
    	// Instantiate the factory
    	shared.Factory factory = GWT.create(shared.Factory.class);
    	// In non-GWT code, use AutoBeanFactorySource.create(MyFactory.class);
     
    	public EventListItf makeEventList() {
    		// Construct the AutoBean
    		AutoBean<EventListItf> eventList = factory.eventList();
    		// Return the Event interface shim
    		return eventList.as();
    	}
     
    	public String serializeToJson(EventListItf eventList) {
    		// Retrieve the AutoBean controller
    		AutoBean<EventListItf> bean = AutoBeanUtils.getAutoBean(eventList);
    		return AutoBeanCodex.encode(bean).getPayload();
    	}
     
    	public static EventListJsonConverter getInstance() {
    		return instance;
    	}
     
    	public EventListItf deserializeFromJson(String json) {
    		AutoBean<EventListItf> bean = AutoBeanCodex.decode(factory, EventListItf.class, "{\"events\":" + json + "}");
    		return bean.as();
    	}
     
    }
    attention il faut utiliser l'interface et non son implémentation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/04/2012, 09h48
  2. Comment récupérer une liste avec une relation one to many ?
    Par tomlaurent dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/11/2011, 07h16
  3. Réponses: 2
    Dernier message: 19/06/2009, 14h37
  4. Comment récupérer une liste de checkbox
    Par guillaume06 dans le forum Struts 1
    Réponses: 7
    Dernier message: 28/02/2008, 19h25
  5. Réponses: 2
    Dernier message: 30/08/2007, 09h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo