2010-07-15 46 views
2

參數這裏是我的歷史價值變動事件處理程序:GWT - 在片段

public void onValueChange(ValueChangeEvent<String> event) { 
    String token = event.getValue(); 

    if (token != null) { 

     if (token.equals("!list")) { 
      GWT.runAsync(new RunAsyncCallback() { 

      public void onFailure(Throwable caught) { 
      } 

      public void onSuccess() { 
       presenter = new ContactsPresenter(rpcService, eventBus, new ContactsView()); 
       presenter.go(container); 
      } 
     }); 
     } 
     else if (token.equals("!add")) { 
      GWT.runAsync(new RunAsyncCallback() { 

      public void onFailure(Throwable caught) { 
      } 

      public void onSuccess() { 
       presenter = new EditContactPresenter(rpcService, eventBus, new EditContactView()); 
       presenter.go(container); 
      } 
     }); 
     } 
     else if (token.equals("!edit")) { 
      GWT.runAsync(new RunAsyncCallback() { 

       public void onFailure(Throwable caught) { 
       } 

       public void onSuccess() { 
        presenter = new EditContactPresenter(rpcService, eventBus, new EditContactView()); 
        presenter.go(container); 
       } 
      }); 
     } 

    } 

正如你所看到的,要www.domain.com/#edit負載高達編輯視圖。但是,我將如何在片段中指定一個參數,例如一個ID,並將其傳遞給Edit Contacts Presenter?

所有的

www.domain.com/#edit/1

回答

1

您通過event.getValue()獲得的令牌只是一個字符串 - 因此您可以使用token.split("/")獲取所有片段,然後根據例如第一個片段進行操作(如果我們得到「編輯」,那麼我們應該期待下一個號碼等)。

+0

是的,比我想象的要簡單得多!謝謝! – 2010-07-15 16:29:55

1

首先,你的例子看起來破碎的添加和編輯的情況下做同樣的事情的onSuccess。但我敢肯定你已經知道;-)

我沒有因爲1.5使用GWT,但是從內存中我們做了與字符串匹配,如:

if (token.startsWith("edit")) { 
    String userID = token.substring("edit".length() + 1); 
    //... 
} 

我倒是希望有在較新版本的GWT中使用助手來序列化和反序列化對象模型的各個位以支持歷史記錄的URL安全令牌是更加痛苦的GWTisms之一。

+0

看起來不像是這樣,所以我只是用基本的String方法做了。 =) – 2010-07-15 16:30:28