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 :

Récupérer résultat d'un appel RPC


Sujet :

GWT et Vaadin Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 41
    Points
    41
    Par défaut Récupérer résultat d'un appel RPC
    Bonjour,

    Cela fait deux heures que je suis bloqué et jai besoin de votre aide..

    Je souhaite recuperer mon resultat de l'appel au service (result) donc je fais comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ModifierT.this.enregService.getTrolls(new AsyncCallback<ArrayList<String>>() {
    				public void onFailure(Throwable caught) {
    					System.out.println("non");
    				}
    				public void onSuccess(ArrayList<String>result) {
    					System.out.println("ok");
    					for (int i = 0; i < result.size() ; i ++)
    					{
    						tmp.add(result.get(i));
    					}
     
    				}
    			});
    Si je fais un System.out.println(result.get(i)) jai bien mon resultat attendu, alors que si je fais System.out.println(tmp.get(i)) par la suite mon tableau est vide..

    D'où cela peut venir? merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Un peu plus de code serait utile.
    Où est déclaré "tmp" ? Où et quand est-il affiché ?


    a++

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 41
    Points
    41
    Par défaut
    Salut adiGuba

    Je suis dans une classe Composite.
    Mon appel au service se fait dans le constructeur de mon composite.
    tmp est un ArrayList<String>qui est déclaré comme constante de ma classe.
    Mon probleme c'est que je n'arrive pas à attribuer à ma variable tmp (qui est vide au début) les valeur que "result" contient.

    J'espere t'avoir éclairé un peu, mais en tous cas merci a toi

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Ben le code que tu as donné devrait fonctionner... (bien que perso j'aurais simplement fait tmp.addAll(result) ou tmp = result).


    Donc sans code plus précis ce sera difficile de t'aider...


    a++

    PS : et quel nom bizarre quand même "tmp" ! De plus tu parles de constante. Que veux-tu dire par là exactement ???

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 41
    Points
    41
    Par défaut
    Ok voila le code de ma classe

    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
    public class Modifier extends Composite {
     
    //CONSTANTS
    private ArrayList<String> listeTrolls = new ArrayList<String>();
    public MultiWordSuggestOracle resultTrollFinal = new MultiWordSuggestOracle(); 
     
    //WIDGETS
    private VerticalPanel vPanel = new VerticalPanel();
    private final EnregServiceAsync enregService = GWT.create(EnregService.class);
     
    // CONSTRUCTEUR 
    ModifierT() {				
    enregService.getTrolls(new AsyncCallback<ArrayList<String>>() {
    public void onFailure(Throwable caught) {}
    public void onSuccess(ArrayList<String>result) {
    MultiWordSuggestOracle resultFinal = new MultiWordSuggestOracle(); 
    	for (int i = 0; i < result.size(); i++) {
    	String str[] = result.get(i).split("/");
    	String str2[] = str[2].split("\\.");
    	resultFinal.add(str2[0]);
    	}
            resultTrollFinal = resultFinal;
    	}
    	});	
    SuggestBox suggestionBox = new SuggestBox(resultTrollFinal);
    vPanel.add(suggestionBox);
    this.initWidget(vPanel); // Initialization du composite
    }
     
    }
    Si je fais comme ca, mon resultTrollFinal est vide. J'ai vérifié, mon resultFinal est quant à lui correctement rempli. Pourquoi resultTrollFinal = resultFinal; ne fonctionne pas ?

    Merci

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ifr38 Voir le message
    Si je fais comme ca, mon resultTrollFinal est vide. J'ai vérifié, mon resultFinal est quant à lui correctement rempli. Pourquoi resultTrollFinal = resultFinal; ne fonctionne pas ?
    Que veux-tu dire par "ca ne fonctionne pas" ? Dans le code que tu donnes je ne vois rien de tel.

    Il n'y a aucune raison que l'affectation ne fonctionne pas...


    a++

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 41
    Points
    41
    Par défaut
    Mon but est d'alimenter ma SuggestBox avec le resultat de l'appel du service..
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void onSuccess(ArrayList<String>result) {
    MultiWordSuggestOracle resultFinal = new MultiWordSuggestOracle(); 
    	for (int i = 0; i < result.size(); i++) {
    	String str[] = result.get(i).split("/");
    	String str2[] = str[2].split("\\.");
    	resultFinal.add(str2[0]);
    	}
          SuggestBox suggestionBox = new SuggestBox(resultFinal);
          vPanel.add(suggestionBox)
    	}
    	});
    ça marche, lorsque je saisis une valeur, on me propose une "autocompletion" (ce que je veux),
    mais si je fais
    SuggestBox suggestionBox = new SuggestBox(resultTrollFinal);
    vPanel.add(suggestionBox);
    en dehors de ma fonction onSucces() et en utilisant resultTrollFinal qui est censé etre égale a resultFinal, on ne me propose pas de valeur pour "atutocompleter", comme si resultTrollFinal ne contenait pas de valeur

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Comme l'indentation n'est pas respecté je n'avais pas vu que tu initialisais ton SuggestBox et son MultiWordSuggestOracle en dehors de la méthode onSuccess().
    C'est tout à fait normal que tu n'ai rien puisqu'à ce moment là la réponse de l'appel RPC n'a pas encore été effectué, et donc tu as un oracle "vide".

    Bref si tu ne fais pas cela dans la méthode onSuccess(), cela ne peut pas être le retour de l'appel RPC...


    a++

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 78
    Points : 41
    Points
    41
    Par défaut
    Comment puis-je faire pour pouvoir mettre le resultat de l'appel au service dans une "variable globale" qui pourra être utilisé partout dans ma classe par la suite?

    Merci a toi encore une fois

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Déjà il faudrait commencer par éviter de créer des objets temporaires pour rien.
    Là tu crées deux MultiWordSuggestOracle donc forcément tu t'embrouilles.

    Il faut donc en créer un seul et le modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	getTrolls(new AsyncCallback<ArrayList<String>>() {
    		public void onFailure(Throwable caught) {
    			// Attention ici il faudrait remonter l'erreur !
    		}
     
    		public void onSuccess(ArrayList<String> result) {
    			// on modifie l'Oracle déjà créé (on n'en crée pas un nouveau)
    			resultTrollFinal.addAll(result);
    		}
    	});
    	SuggestBox suggestionBox = new SuggestBox(resultTrollFinal);

    a++

Discussions similaires

  1. Récupérer résultat d'appels système
    Par Soycd dans le forum Adaptive Server Enterprise
    Réponses: 16
    Dernier message: 14/06/2010, 09h13
  2. [debug] comment récupérer la pile d'appel lors d'un crash ?
    Par mamelouk dans le forum Autres éditeurs
    Réponses: 13
    Dernier message: 10/11/2006, 17h22
  3. Réponses: 2
    Dernier message: 03/05/2006, 08h22
  4. [VBA-E] Récupérer résultat d'une requête
    Par ragnarök dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/04/2006, 16h21
  5. Réponses: 5
    Dernier message: 30/06/2005, 10h28

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