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 :

Appeler méthode Java dans ui.xml


Sujet :

GWT et Vaadin Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Appeler méthode Java dans ui.xml
    Bonjour a tous,

    Voici mon ui.xml, tel qu'il est actuellement,:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <ui:with field='msg' type='mon_package.SCMessages'/>
     
    <g:DisclosurePanel addStyleNames="discdataBox" ui:field="myfield" animationEnabled="true" title="{msg.WelcomMessage}">
    Et mon code java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public interface SCMessages extends Messages {
     
    	@DefaultMessage("Hello World!")
    	public String WelcomeMessage();
    }

    Bon rien a dire la dessus, tout fonctionne parfaitement !!!



    Le probleme arrive quand je veux que le message contenu dans "title" de mon ui.xml soit modulaire, en fait j'aimerais faire un truc qui ressemble a ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <ui:with field='msg' type='mon_package.SCMessages'/>
     
    <g:DisclosurePanel addStyleNames="discdataBox" ui:field="myfield" animationEnabled="true" title="{msg.get(2)}">
    Ou mon code ressemblerait eventuellement a quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class SCMessages {
     
    String[] messages;
     
    	public static String get(int index) {
     return messages[index];
    }
    }
    Bien entendu ce code ne marche pas, mais je voulais que vous compreniez ce que je voulais faire.

    Donc voila ma question, comment je pourrais ne pas hardcoder mes messages et faire afficher des messages qui peuvent varier?

    Merci d'avance a ceux qui m'aideront!

  2. #2
    Membre régulier Avatar de docr1
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    Tu pourrais essayer de créer une interface et une classe qui l'implementerai, fournissant ta methode get(...).

    Ensuite tu modifie ton gwt.xml pour préparer le deffered binding et je pense que cela pourrait marcher? Je ne peux pas tester pour le moment mais je vais essayer de mon coté.

    Ta methode n'a pas besoin d'être statique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <replace-with class="replacement_class_name">
       <when-type-is class="interface_name" />
    </replace-with>

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Bonjour et merci de ta reponse.

    J'ai tente ce que tu m'as dit, mais dans mon xml le probleme est le meme, je ne peux pas appeler ma fonction avec un argument specifique, c'est a dire que je ne peux pas faire quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <g:DisclosurePanel addStyleNames="discdataBox" ui:field="discfield" animationEnabled="true" title="{msg.get(2)}">
    Ou peut etre as tu reussi toi ?

    Sinon pour contourner ce probleme, actuellement voici ce que j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class SmartClientMessages extends Composite {  
        public String getTitle() {
            return "toto";
        }
    }
    Du coup cela veut dire que je peux appeler une fonction a la place de "toto", comme par exemple ecrire ceci:

    MAIS, (car il y a toujours un mais), le probleme c'est que pour remplir ce treemap, je lis un fichier cote server, et donc le seul moyen pour lire un fichier cote serveur avec GWT c'est utiliser les RequestBuilder (si vous avez une autre solution je suis preneur !!).
    Et donc le probleme c'est qu'en lancant l'execution, on va faire la requete pour lire le fichier, puis on va charger les XML, et seulement APRES, on recoit la reponse a la requete.

    En gros si vous avez suivi, seulement apres avoir charger les XML, on remplit le treemap ... donc je me retrouve avec des "null" dans mon application.

    Une solution ? :$

  4. #4
    Membre régulier Avatar de docr1
    Profil pro
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    En fait, je viens de tester et la configuration dans le gwt.xml n'est pas nécessaire, on peut directement cibler la classe sans avoir besoin d'interface.

    Je n'avais pas fais attention aux paramètre que tu passais.

    Si je ne me trompe pas, sur un des projets sur lequel je travaillais, un fichier de properties sur le server était chargé par le client dans un dictionnaire Javascript stocké dans la page HTML qui sert de base à l'appli GWT.

    Ensuite, une classe avait été créer pour avoir accès directement à ce dictionnaire.

    Je pense que ce genre de solution pourrait répondre a ton besoin, sans avoir a utiliser de requestbuilder.


    Pour la partie passage de paramètre, je ne vois que le chargement de libelle a partir de la classe java lié a ton uibinder, qui elle a accès a tes Widget et peut appeler des méthodes en fournissant des paramètres.

    Par contre c'est sur que ça sera mois joli

Discussions similaires

  1. Appel d'une méthode JAVA dans un programme RPG
    Par LIANAZEL dans le forum AS/400
    Réponses: 1
    Dernier message: 09/08/2012, 18h11
  2. Appel de méthode java dans un fichier jrxml
    Par isicien dans le forum Jasper
    Réponses: 1
    Dernier message: 23/02/2010, 01h19
  3. Appeler une méthode JAVA dans code C#
    Par lamyruth dans le forum C#
    Réponses: 11
    Dernier message: 26/10/2009, 16h12
  4. Réponses: 6
    Dernier message: 24/03/2009, 17h17
  5. Appeler des méthodes Java dans javascript
    Par Kyo-AzN dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2008, 21h19

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