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 :

Implémentation du Model View Presenter


Sujet :

GWT et Vaadin Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 23
    Points : 25
    Points
    25
    Par défaut Implémentation du Model View Presenter
    Bonjour,
    Ke commence à travailler avec GWT en utilisant MVP, j’ai suivi le tutoriel de google , malheureusement mon premier test déjà ne veut pas s’exécuter, voici l’erreur que j’obtienne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     com.google.gwt.core.client.JavaScriptException: (NS_ERROR_DOM_HIERARCHY_REQUEST_ERR) @com.google.gwt.dom.client.Node::appendChild(Lcom/google/gwt/dom/client/Node;)([JavaScript object(33)]): Node cannot be inserted at the specified point in the hierarchy

    j’ai créé une classe AppControlleer.java celle-ci déclenche le presenter voici son code
    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
     
    public class AppController implements Presenter{
     
    private final HandlerManager eventBus;
     private final EnvironmentOrganeServiceAsync rpcService; 
     private HasWidgets container;
     
      public AppController( EnvironmentOrganeServiceAsync rpcService, HandlerManager eventBus) {
        this.eventBus = eventBus;
        this.rpcService = rpcService;
     
      }
     
      public void go(final HasWidgets container) {
    	    this.container = container;
    	    Presenter presenter = null;
    	    presenter = new uiPresenter(rpcService,eventBus, new uiTestView());
            Window.alert("charge");
     
    	  }
     
     }

    Comme je ne maitrise pas bien l’implementation du modele j’ai essayé de simplifier au max pour localiser l’erreur, donc je ne sais pas si vous voyez s’il y ait une erreur dans cette classe. parce que pour les classes du presenter et de la vue j'ai fais la même chose comme pour le tutoriel du google, et pour la communication entre le serveur et le client je l'ai essayé sans MVP et ça marche !!!!

    Merci d'avance pour votre aide

  2. #2
    Membre actif
    Avatar de karbos
    Inscrit en
    Novembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 155
    Points : 255
    Points
    255
    Par défaut
    Cette erreur signifie que tu essayes d'insérer un composant graphique à un endroit où il ne devrait pas l'être... Le code que tu fournis ne donne pas assez de précision pour t'aider plus...
    A ta place, je commencerais par analyser ce qui se passe quand tu exécutes ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    presenter = new uiPresenter(rpcService,eventBus, new uiTestView());
    Si l'erreur te saute pas aux yeux (un conteneur qui contient un composant qui contient lui-même son propre conteneur, par exemple), tu peux toujours coller le code des classes UiTestView et UiPresenter pour qu'on t'aide un peu.
    Bon courage !

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 23
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Merci beaucoup pour votre réponse,


    justement j'ai beau vérifié les traces des fonctions qui ont un conteneur comme paramètre mais je ne vois toujours rien , donc je vous colle le code des classes en espérant que vous pourriez m'aider


    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
     
     
    public class AppController implements Presenter{
     
     
    	private final HandlerManager eventBus;
        private final EnvironmentOrganeServiceAsync rpcService; 
      private HasWidgets container;
     
      public AppController( EnvironmentOrganeServiceAsync rpcService, HandlerManager eventBus) {
        this.eventBus = eventBus;
         this.rpcService = rpcService;
     
     
      }
     
     
     
      public void go(final HasWidgets container) {
    	    this.container = container;
    	    Presenter presenter = null;
    	    presenter = new uiPresenter(rpcService,eventBus, new uiTestView());
    	    presenter.go(container);
     
    	  }
     
    }
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    public class uiTestView extends Composite implements uiPresenter.Display{
     
     
     
     
     
    	private FlexTable elmtTable;
     
     
     
    	public uiTestView(){
     
    		DecoratorPanel contentTableDecorator = new DecoratorPanel();
    	    initWidget(contentTableDecorator);
    	    contentTableDecorator.setWidth("100%");
    	    contentTableDecorator.setWidth("18em");
    	    elmtTable = new FlexTable();
    	    elmtTable.setCellSpacing(0);
    	    elmtTable.setCellPadding(0);
    	    elmtTable.setWidth("100%");
    	    elmtTable.addStyleName("elements de l'arbre");
    	    elmtTable.getColumnFormatter().setWidth(0, "15px");
    	    elmtTable.setWidget(1, 0, elmtTable);
     
    	    contentTableDecorator.add(elmtTable);
     
    	}
     
    	 public void setData(List<String>  data) {
    		 elmtTable.removeAllRows();
     
    		    for (int i = 0; i < data.size(); ++i) {
     		    	elmtTable.setText(i, 0, data.get(i));
    		    }
    		  }
     
     
     
     
     
     
    	 public Widget asWidget() {
    		    return this;
    		  }
    }

    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
     
     
    public class uiPresenter implements Presenter{
     
     
     
     
    	 private  final EnvironmentOrganeServiceAsync rpcService;
    		private final HandlerManager eventBus;
    		private final Display display;
     
    		public uiPresenter( EnvironmentOrganeServiceAsync rpcService,HandlerManager eventBus,Display view){
    		    this.eventBus = eventBus;
    		    this.display = view;
    		     this.rpcService=rpcService;
    		}
     
    		public interface Display{
     
    			 public void setData(List<String>   data) ;
    			Widget asWidget();
    		}
     
     
    		public void go(final HasWidgets container) {
     
     
    			container.clear();
    		    container.add(display.asWidget());
    		//    fetchorgTreeData();
     
    		}


    Merci encore pour votre aide

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 23
    Points : 25
    Points
    25
    Par défaut
    Bonjour,


    Apparemment j'ai trouvé l'erreur , c'etait dans la classe uiTestViewer j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     elmtTable.setWidget(1, 0, elmtTable);


    je n'ai pas remarqué ça car je me concentrais sur ce qui est particulier à MVP


    Merci

  5. #5
    Membre actif
    Avatar de karbos
    Inscrit en
    Novembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 155
    Points : 255
    Points
    255
    Par défaut
    Oui, c'est ce qui me semblait. Notez que ce message d'erreur signifie généralement que vous essayez d'insérer un Widget dans lui même ou dans un élément dont il est le conteneur...
    Bonne journée, avec GWT

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/05/2012, 04h09
  2. Implémentation d'un Abstract{Model,View}
    Par granquet dans le forum PyQt
    Réponses: 1
    Dernier message: 22/08/2009, 10h10
  3. Architecture Model-View-Controller 2
    Par womannosky dans le forum Langage
    Réponses: 11
    Dernier message: 26/06/2008, 16h55
  4. VS 2005 et Modeles non present
    Par Bronks dans le forum Visual Studio
    Réponses: 0
    Dernier message: 27/08/2007, 11h25

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