Изменение в URL для запуска события в GWT - PullRequest
4 голосов
/ 29 июля 2010

Я перебираю некоторые данные и генерирую параметризованные URL-ссылки на основе следующих условий:

finishedHTML.append("<a href=\"http://" + domain + "&service=" + allEvents[eventCounter].EventService +"&day="+ offSet+(-1 * i) +"\"><img src=\"/info.jpg\" alt=\"Info\"/>");

У меня было начало проверки приложения на наличие параметров URL-адресов при загрузке / обновлении страницы, и я предпринял некоторые действия в зависимости от того, были ли параметры там и какими они были.

Однако я добавил # в начало параметров, чтобы не нужно было обновлять страницу, но теперь она не вызывает функцию, которая проверяет URL.

Мой вопрос: как я могу вызвать событие в GWT, когда пользователь нажимает на ссылку? Нужно ли создавать элементы управления GWT и связывать обработчик кликов? Можно ли настроить событие, которое срабатывает при изменении URL-адреса ???

UPDATE: Адам ответил на часть исходного вопроса, но я не могу получить строку запроса после "#". Есть ли лучший способ, чем функция ниже:

public static String getQueryString() 
 {
     return Window.Location.getQueryString();
 }

Другими словами, если я введу example.com?service=1, я получу service = 1 в качестве моей строки запроса. Если я введу example.com#?service=1, я получу нулевое значение для строки запроса ..

Ответы [ 2 ]

9 голосов
/ 29 июля 2010

Используйте History.addValueChangeHandler( handler ) и создайте обработчик для отслеживания изменений URL.

Нет необходимости в обработчиках кликов и т. Д., Любое изменение части "хеш" в URL будет достаточным.

EDIT:

Посмотрите этот пример кода - он проанализирует URL-адреса вида http://mydomain/my/path#tok1&tok2&tok3

public void onValueChange(ValueChangeEvent<String> event) {
  String hash = event.getValue();
  if ( hash.length() == 0 ) {
    return;
  }
  String[] historyTokens = hash.split("&",0);
  // do stuff according to tokens
}
4 голосов
/ 03 августа 2010

(просто отвечая на ваше обновление) Вы пробовали

History.getToken()

чтобы получить значение после "#"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...