GWT:如何使用地方代币

时间:2015-08-13 09:08:07

标签: java gwt

作为一个小例子:拿一个你登陆登录页面的网站,成功登录后直接进入主页面,在左边你有一个菜单,在右边一个内容就是一切单击菜单中的链接时会加载。在菜单中,我有多个商店,每个商店都有自己的设置。这些设置将使用id进行初始化,以确定视图应显示的内容。

对于历史映射器,我想有人会有这样的事情:

/#LoginPlace:login
/#MainPlace:home
/#MainPlace:storeSettings?id=<id>
/#MainPlace:userSettings
etc..

在[2]中说

  

为了通过网址访问,活动需要相应的地方。

听起来我觉得我应该有一个LoginActivity和一个MainActiviy,因为我来到我的网站后LoginActivity是我到达的第一个Place { {1}}是我成功登录后的地方。

我有这样的事情:

MainActivity

当然有各自的观看public class LoginActivity extends AbstractActivity implements LoginView.Presenter { // .. private void onLoginSuccess() { this.clientFactory.getPlaceController().goTo(new MainPlace()); } } public class MainActivity extends AbstractActivity implements MainView.Presenter { // .. } LoginView

这就是MainView的样子:

AppActivityMapper.getActivity()

到目前为止一直很好,但我如何实施@Override public Activity getActivity(Place place) { if (place instanceof LoginPlace) { return new LoginActivity((LoginPlace) place, clientFactory); } else if (place instanceof MainPlace) { return new MainActivity((MainPlace) place, clientFactory); } return null; } MenuView

我希望能够点击MainContentView中的菜单项并更新MenuView并相应地生成地点标记,如:

MainContentView

但我不知道如何做到这一点以及如何使用给定的/#MainPlace:home /#MainPlace:storeSettings?id=<id> /#MainPlace:userSettings 初始化我的活动StoreSettingsActivity。我相信我需要另一个id,现在应该通过点击菜单链接来控制发起的地点更改,但我无法弄清楚它是如何工作的。

我希望我的问题很清楚,如果您需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

我认为我曾做过类似的事情,但这并不完美,因为我必须处理现有的架构,但它有效。

这是我做的:

  1. 点击菜单中的链接后,执行placeController.goTo(new MainPlace(id));

  2. ActivityMapper中,返回您设置MainActivity ID的MainPlace

  3. 在您的MainActivity中,在start方法中调用一种方法,该方法将根据您在{{1}中先前设置的MainContentView的ID启动MainPlace }。
  4. 我非常确定有更好的方法可以做到这一点,但它有效,它可以帮助您找到更好的解决方案。