Bonjour,

Je suis en train de réaliser une application perso en GWT en utilisant le Model Vue Presenter comme expliqué sur le site de google (http://code.google.com/intl/fr/webto...ture.html#view).

Au moment du lancement de l application, j'obtiens l erreur:
Caused by: java.lang.NullPointerException at com.voiture.entrainement.client.presenter.VoiturePresenter.go(VoiturePresenter.java:38) at com.voiture.entrainement.client.presenter.AppController.bind(AppController.java:29) at com.voiture.entrainement.client.presenter.AppController.(AppController.java:22) at com.voiture.entrainement.client.Voiture.onModuleLoad(Voiture.java:17) ... 9 more
Je vous fournis le code de la classe VoiturePresenter:

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
package com.voiture.entrainement.client.presenter;
 
import java.util.ArrayList;
import java.util.List;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Widget;
import com.voiture.entrainement.client.VoitureServerAsync;
import com.voiture.entrainement.shared.Voiture;
 
public class VoiturePresenter implements Presenter {
	 public interface Display {
		 HasClickHandlers getAddButton();
		 Widget asWidget();
		 void setData(List<Voiture> data);
	 }
 
	private final Display display;
	 private final VoitureServerAsync rpcService;
	  private final HandlerManager eventBus;
	  private List<Voiture> voitures;
 
	public VoiturePresenter(Display display,VoitureServerAsync voitureServer,HandlerManager eventBus){
		this.display = display;
		this.rpcService = voitureServer;
		this.eventBus = eventBus;
	}
	@Override
	public void go(HasWidgets container) {
 
	    bind();
	    container.clear();
	    container.add(display.asWidget());
	    fetchVoiture();
	}
 
 
	private void fetchVoiture(){
	    rpcService.getVoitureList(new AsyncCallback<ArrayList<Voiture>>(){
	        public void onSuccess(ArrayList<Voiture> result) {
	          voitures = result;
 
 
	            display.setData(voitures);
	        }
 
	        public void onFailure(Throwable caught) {
	          Window.alert("Error fetching contact details");
	        }
	      });
	}
 
	private void bind(){
		display.getAddButton().addClickHandler(new ClickHandler() {
 
			@Override
			public void onClick(ClickEvent event) {
				// TODO Auto-generated method stub
 
			}
		});
	}
 
}

Voici le code de la classe AppController:

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
package com.voiture.entrainement.client.presenter;
 
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.HasWidgets;
import com.voiture.entrainement.client.VoitureServerAsync;
import com.voiture.entrainement.client.view.VoitureView;
 
public class AppController implements Presenter, ValueChangeHandler<String> {
 
	 private final HandlerManager eventBus;
	  private final VoitureServerAsync rpcService; 
	  private HasWidgets container;
 
 
	public AppController(HandlerManager eventBus,
			VoitureServerAsync rpcService) {
		this.eventBus = eventBus;
		this.rpcService = rpcService;
		bind();
	}
 
	private void bind(){
		 // History.newItem("list");
		 History.addValueChangeHandler(this);
		Presenter  presenter = new VoiturePresenter( new VoitureView(),rpcService, eventBus);
		presenter.go(container);
	}
	@Override
	public void onValueChange(ValueChangeEvent<String> event) {
		 String token = event.getValue();
 
		 Presenter presenter =null;
		    if (token != null) {
		      //Presenter presenter = null;
		    }
 
		    if (token.equals("list")) {
		    	System.err.println("entrer1");
		        presenter = new VoiturePresenter( new VoitureView(),rpcService, eventBus);
		        System.err.println("entrer2");
		    } 
		    presenter.go(container);
	}
 
	@Override
	public void go(HasWidgets container) {
		 this.container = container;
 
		    if ("".equals(History.getToken())) {
		      History.newItem("list");
		    }
		    else {
		      History.fireCurrentHistoryState();
		    }
 
	}
 
 
}
Je vous remercie de votre aide