Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 吕震中本:我如何从“活动开始”方法进入一个新的地方?_Java_Gwt - Fatal编程技术网

Java 吕震中本:我如何从“活动开始”方法进入一个新的地方?

Java 吕震中本:我如何从“活动开始”方法进入一个新的地方?,java,gwt,Java,Gwt,所以我在做这样的事情: 但我看到的行为是,我的浏览器的历史记录是原始url(来自原始请求),然后是登录:redirectPlace,然后是原始url 似乎我需要在start()方法完成后执行重定向。是否有适当的方法延迟/委托在start方法之外发生的转到 谢谢。这就足够了: Scheduler.get(){ @凌驾 public void execute(){ _app.goTo(新登录空间(_app.getCurrentPlaceToken()); } } 这就足够了: Scheduler.

所以我在做这样的事情:

但我看到的行为是,我的浏览器的历史记录是原始url(来自原始请求),然后是登录:redirectPlace,然后是原始url

似乎我需要在start()方法完成后执行重定向。是否有适当的方法延迟/委托在start方法之外发生的转到

谢谢。

这就足够了:

Scheduler.get(){
@凌驾
public void execute(){
_app.goTo(新登录空间(_app.getCurrentPlaceToken());
}
}
这就足够了:

Scheduler.get(){
@凌驾
public void execute(){
_app.goTo(新登录空间(_app.getCurrentPlaceToken());
}
}

Thomas的回答是解决这个问题的一种方法。不过,你可能想考虑一下你的位置是如何映射到活动的,因为如果你的活动开始时立即重定向到一个新位置,你会在用户的历史记录中添加一个对他们来说没有意义的标记。相反,你可以拉你的if(!\u app.isUserLoggedIn())在ActivityMapper中设置条件,并启动LoginActivity,而不是启动SecureActivity,然后更改位置以访问LoginActivity。(即,您不必总是有位置到活动的1对1映射).Ben,这是一个很好的建议。我一直在考虑一对一的映射。特别是,我一直在设置SecureActivity以扮演测试授权的角色。如果我将其移动到映射器,一旦登录成功,我是使用places重试转到原始位置?还是手动调用映射器以开始那个活动?这是个好问题!我忘记的是你不能去一个你已经在的地方,所以你是对的,你必须手动开始新的活动(看起来不太正确)。这可能值得提出自己的问题;也许GWT团队会插话说明该怎么做。Thomas的回答是解决这个问题的一种方法。不过,你可能需要考虑一下你的位置是如何映射到活动的,因为如果你的活动在开始时立即重定向到一个新的位置,你可以在用户的历史记录中添加一个标记这对他们来说没有意义。相反,你可以将你的if(!\u app.isUserLoggedIn())条件拉入你的ActivityMapper,启动LoginActivity,而不是启动SecureActivity,然后更改位置以访问LoginActivity。(即,你不必总是有位置到活动的1对1映射).Ben,这是一个很好的建议。我一直在考虑一对一的映射。特别是,我一直在设置SecureActivity以扮演测试授权的角色。如果我将其移动到映射器,一旦登录成功,我是使用places重试转到原始位置?还是手动调用映射器以开始那个活动?这是个好问题!我忘记的是你不能去一个你已经在的地方,所以你是对的,你必须手动开始新的活动(这似乎不太正确)。这可能值得提出自己的问题;也许GWT团队会插话做什么。
public class SecureActivity extends AbstractActivity {
  public void start(AcceptsOneWidget container, EventBus eventBus) {    
    if (!_app.isUserLoggedIn()) {
      _app.goTo(new LoginPlace(_app.getCurrentPlaceToken()))
    } else {
      // do cool secure stuff
    }
  }
}