2016-06-16 16 views
1

In meinem ApplicationBootstrapper implements Bootstrapper Ich habe Zugang zu dem injizierten PlaceManager:Wie bekomme ich die aktuelle Ortsanfrage beim (Client-) Start?

public class ApplicationBootstrapper implements Bootstrapper { 

    private PlaceManager placeManager; 

    @Inject 
    public ApplicationBootstrapper(PlaceManager placeManager) { 
     this.placeManager = placeManager; 
    } 
} 

Allerdings, wenn ich versuchen, den Ort zu zeigen, die in dem Ort-Manager wie diese festgelegt ist:

private void revealRequestedPlaceAfterBootstrapping() { 
    PlaceRequest currentPlaceRequest = this.placeManager.getCurrentPlaceRequest(); 
    this.placeManager.revealPlace(currentPlaceRequest); 
} 

es nicht funktioniert. Der Grund dafür scheint zu sein, dass die currentPlaceRequest keine Informationen über die aktuelle URL enthält, auf die zugegriffen wird, was mich mit einer leeren Webseite verlässt.

Was mache ich falsch? Wie kann ich den gewünschten Ort angeben, wenn meine Anwendung gestartet wird?

Antwort

0

Ich bin kein Experte, aber ich glaube, Sie versuchen, eine PlaceRequest zu erhalten, bevor ein solches vorhanden ist. Versuchen Sie einfach anzurufen:

placeManager.revealCurrentPlace() - dies wird die Seite enthüllen, auf die der Benutzer versucht hat zuzugreifen (höchstwahrscheinlich Ihre Homepage, wenn es nichts nach dem # in der URL gibt).

ODER

placeManager.revealDefaultPlace() - dies wird zeigen, was Sie in Ihrem ClientModule auf Ihrem Standard Platz gesetzt.

Weitere Informationen finden Sie unter Revealing Places und Initialize GIN.

Viel Glück und viel Spaß!

+0

Ja, das habe ich gebraucht! Danke, Mann! :) – displayname

+0

Keine Sorgen! Fühlen Sie sich frei, mir auch eine Aufwertung zu geben :) (großer Benutzername btw) – slugmandrew

-1

Wenn ich dich richtig verstanden habe, wird dir das helfen, du verpasst den historischen Teil des Deals.

http://www.gwtproject.org/doc/latest/DevGuideMvpActivitiesAndPlaces.html#Putting_it_all_together

public void onModuleLoad() { 
    ClientFactory clientFactory = GWT.create(ClientFactory.class); 
    EventBus eventBus = clientFactory.getEventBus(); 
    PlaceController placeController = clientFactory.getPlaceController(); 

    // Start ActivityManager for the main widget with our ActivityMapper 
    ActivityMapper activityMapper = new AppActivityMapper(clientFactory); 
    ActivityManager activityManager = new ActivityManager(activityMapper, eventBus); 
    activityManager.setDisplay(appWidget); 

    // Start PlaceHistoryHandler with our PlaceHistoryMapper 
    AppPlaceHistoryMapper historyMapper= GWT.create(AppPlaceHistoryMapper.class); 
    PlaceHistoryHandler historyHandler = new PlaceHistoryHandler(historyMapper); 
    historyHandler.register(placeController, eventBus, defaultPlace); 

    RootPanel.get().add(appWidget); 
    // Goes to the place represented on URL else default place 
    historyHandler.handleCurrentHistory(); 
} 
+1

Dies verwendet die allgemeinen GWT-Aktivitäten und Orte und nicht GWT-Plattform, wie der Benutzer gefragt hat. – slugmandrew

+1

Ja, du hast Recht, ich habe diesen Teil komplett vermisst, danke, dass du ihn aufgeräumt hast. – Lista

Verwandte Themen