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

时间:2016-06-16 19:18:39

标签: gwt gwtp

在我的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不包含有关当前访问的网址的任何信息,而这些网址会留下一个空的网页。

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

2 个答案:

答案 0 :(得分:0)

我没有专家,但我相信你在一个人存在之前试图获得PlaceRequest。试着打电话:

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

placeManager.revealDefaultPlace() - 这会显示您在ClientModule中设置的默认位置。

有关详细信息,请参阅Revealing PlacesInitialize GIN

祝你好运,玩得开心!

答案 1 :(得分:-2)

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

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