如何在(客户端)启动时获取当前位置请求?

How to get current place request on (client) startup?

在我的 ApplicationBootstrapper implements Bootstrapper 中,我可以访问注入的 PlaceManager:

public class ApplicationBootstrapper implements Bootstrapper {

    private PlaceManager placeManager;

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

但是,如果我尝试像这样显示在地点管理器中设置的地点:

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

它不工作。原因似乎是 currentPlaceRequest 不包含有关正在访问的当前 URL 的任何信息,这让我的网页一片空白。

我做错了什么?如何在我的应用程序启动时显示请求的位置?

如果我对你的理解是正确的,这会对你有所帮助,你错过了交易的历史部分。

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();
}

我不是专家,但我相信您正试图在 PlaceRequest 存在之前获得它。试着打电话:

placeManager.revealCurrentPlace() - 这将显示用户尝试访问的页面(如果 url 中的# 后没有任何内容,很可能是您的主页)。

placeManager.revealDefaultPlace() - 这将显示您在 ClientModule.

中设置为默认位置的任何内容

有关详细信息,请参阅 Revealing Places and Initialize GIN

祝你好运,玩得开心!