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 :

Erreur quand je retourne Object[][] suite à un RPC


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut Erreur quand je retourne Object[][] suite à un RPC
    Bonjour à tous,

    En fait je fais un appel à mon service, mais j'ai l'impression que le compilateur n'est pas content, puisque je retourne une matrice d'objet "Object[][]", il m'affiche l'erreur suivante :

    Computing all possible rebind results for 'X.Y.Z.MyService'
    Rebinding X.Y.Z.MyService
    Invoking <generate-with class='com.google.gwt.user.rebind.rpc.ServiceInterfaceProxyGenerator'/>
    Generating client proxy for remote service interface 'X.Y.Z.MyService'
    Analyzing 'X.Y.Z.MyService' for serializable types
    Analyzing methods:
    public abstract java.lang.Object[][] getServicesInfos()
    Return type: java.lang.Object[][]
    [ERROR] In order to produce smaller client-side code, 'Object' is not allowed; consider using a more specific type
    [ERROR] Errors in 'C:\workspace\Projet\war\src\main\java\X\Y\Z\MyServices.java'
    [ERROR] Line 32: Failed to resolve 'X.Y.Z.MyService' via deferred binding
    [ERROR] Cannot proceed due to previous errors
    [ERROR] Build failed
    j'ai déjà eu ce problème quand j'ai retourné une HashMap j'ai ajouté l'annontation suivante et ça marchait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /**
        *
        @gwt.typeArgs <java.lang.String,java.lang.String>
        */
    Mais le problème c'est que je sais pas quel genre d'annotation il faut écrire à Object[][], ou bien s'il y a un autre moyen pour résoudre ce problème.

    Merci d'avance pour votre aide, j'en ai beaucoup besoin et bonne journée à vous tous et toutes.

    Walas,

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut
    J'ai moi aussi eu ce problème hier

    Je me suis arranger pour que ce ne soit plus un Object[][] qui soit retourné, mais des String[][], et là ça fonctionne. Cependant ça reste du bricolage et on je pense que je ne vais pas pouvoir m'en contenter.

    Les annotations ont, si je ne dis pas de bêtises (je ne connais rien aux annotations que ce soit du but ni du fonctionnement), été introduite avec Java 5, hors la version GWT 1.4 ne supporte que Java 4... Je vois pas trop comment tu as pu utiliser les annotations...

  3. #3
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Effectivement, GWT "interdit" l'utilisation d'Object pour soit disant minimisé le code généré.

    Il recommande de préciser le type précis des objets transmis car le plus souvent, on le connait effectivement. Si l'objet transmis est une String, au lieu de mettre Object, on signifie une String. Si l'objet transmis est une liste de String, au lieu de mettre une List<Object>, on signifie une List<String>

    En GWT 1.4.x, on précise le type via le commentaire :
    @gwt.typeArgs <java.lang.String> car effectivement, GWT 1.4.x est compatible Java 1.4 où il n'y a pas les annotations, ni les templates.
    En GWT 1.5 (version non finale mais dispo sur le groupe GWT), il est compatible Java 1.5 et on peut éviter ce @gwt.typeArgs. C'est beaucoup mieux ...

    Malheureusement, il y a des cas où une liste ou une map d'objets contiennent des objets de types différents. On peut alors s'en sortir si ces types d'objets appartiennent à la même hierarchie en utilisant leur super type commun.

    Parfois, il n'y en a pas, j'utilise alors l'interface Serializable comme type commun.

    Utiliser String[][] à la place de Object[][] n'est pas un bricolage dans le cas ou tu affaire à un tableau à 2 dim. de String, c'est bien ça qu'il faut utiliser.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut
    Citation Envoyé par benwit Voir le message
    Utiliser String[][] à la place de Object[][] n'est pas un bricolage dans le cas ou tu affaire à un tableau à 2 dim. de String, c'est bien ça qu'il faut utiliser.
    Le Object[][] me sert à remplir un tableau pour un affichage, dans ce tableau j'ai des String et des Double. Donc pour éviter de passer des Object je transforme mes Double en en String mais si y'avais moyen de passer un Object ça m'arrangerai

  5. #5
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Convertir un float en String, c'est pas non plus super contraignant. Ceci dit, c'est vrai que bloquer Object c'est pas top, ils avaient qu'à lancer un warning.

    Tu peux essayer avec le seul type commun à String et Double en dehors d'Object : Serializable[][]. Tu auras des warnings à cause de certaines de leur classes qui deviennent alors candidate.

    PS : Si tu avais eu des double et des int, tu aurais pu utiliser Number.

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

Discussions similaires

  1. Retourner un object suite à une requête select
    Par [R]Viper dans le forum Accès aux données
    Réponses: 1
    Dernier message: 06/04/2012, 08h46
  2. interface idlj et Object Suite (JAVA)
    Par canou94 dans le forum CORBA
    Réponses: 5
    Dernier message: 25/11/2005, 22h21
  3. erreur quand je veux remplir une CList :
    Par stof dans le forum MFC
    Réponses: 10
    Dernier message: 03/02/2005, 16h18
  4. [Servlet - MySQL] Ca marche mais message d'erreur quand même
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/11/2004, 15h15
  5. Réponses: 2
    Dernier message: 27/05/2002, 19h46

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