GWT - параметры во фрагменте - PullRequest
2 голосов
/ 15 июля 2010

Вот мой обработчик события изменения значения истории:

  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 загружает представление редактирования.Но как мне указать параметр во фрагменте, например, идентификатор, и передать его в Редактор представления контактов?

www.domain.com / # edit / 1

Ответы [ 2 ]

1 голос
/ 15 июля 2010

Токен, который вы получаете с помощью event.getValue(), является просто строкой, поэтому вы можете использовать token.split("/"), чтобы получить все фрагменты, а затем перейти, например, к первому (если мы получим «edit», то мыследует ожидать следующего числа и т. д.).

1 голос
/ 15 июля 2010

Во-первых, ваш пример выглядит неработоспособным, поскольку случаи добавления и редактирования в случае успеха делают одно и то же.Но я уверен, что вы уже знали это; -)

Я не использовал GWT с 1.5, но по памяти мы делали это при сопоставлении строк, например:

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

I 'Я надеюсь, что в более новых версиях GWT будут помощники, поскольку сериализация и десериализация фрагментов вашей объектной модели для URL-безопасных токенов для поддержки истории была одним из наиболее болезненных GWTisms.

...