2017-01-03 79 views
1

当我执行完成时,我正在重定向其他某个网页。我想向我的用户显示我们正在“重定向到%d秒”的消息,因为我使用了Timer类,但它仍然会立即重定向。定时器在GWT中不工作,

代码如下。

public void redirect(){ 
     hanldeWait() ; 
     Window.Location.assign(Url) ; 
} 

    private void hanldeWait(){ 
    Timer timer = new Timer() { 
     int i = 5 ; 
     public void run() { 
      if(i < 0){ 
       errorMessage.setVisible(false); 
       cancel() ; 
      }else{ 
       i-- ; 
       String redirectionMessage = "Redirecting in %d seconds" ; 
       String displayMessage = redirectionMessage ; 

       displayMessage = format(redirectionMessage, (Integer)i) ; 
       errorMessage.setText(displayMessage); 
       errorMessage.setVisible(true); 

      } 
     } 
     }; 
     timer.scheduleRepeating(5000) ; 
} 

如果我在这里做错了什么。

+0

'scheduleRepeating(5000)'应该是'schedule(5000)',如果你只希望它运行一次。 –

+0

不,我想重复,直到我达到0. – abhishekgarg

+0

但你已经告诉它通过this.schedule(1000)'重新运行。该行取消'scheduleRepeating(5000)'。 –

回答

2

您的代码会告诉浏览器立即重定向,而不会延迟。

如果你想延迟一段时间后重定向,然后

Window.Location.assign(Url) ; 

应该叫一个定时器的run方法。

+0

谢谢安德烈,工作正常。 – abhishekgarg