работа с Query String в GWT - PullRequest
5 голосов
/ 07 июня 2011

Мне нужно создать динамический URL-адрес, содержащий идентификатор пользователя и параметры электронной почты, которые будут указывать на форму регистрации в моем приложении GWT.Я хочу установить и получить параметры в строке запроса.Я сослался на tp http://code.google.com/p/gwt-examples/source/browse/trunk/System/src/com/gawkat/gwt/system/client/global/QueryString.java?r=1241, но здесь QueryStringData недоступен для моего проекта. Скажите, пожалуйста, как я могу это сделать?Любая альтернатива также может помочь мне.

Ответы [ 4 ]

14 голосов
/ 16 июня 2011

@ Штейн, но есть (токенайзер параметра запроса в GWT): например, Window.Location.getParameter("debug") вернет строковое значение параметра debug.

2 голосов
/ 23 мая 2013

Если вы действительно хотите разобрать маркер истории (часть хеша) для кодирования параметров, вот код для этого:

private static Map<String, String> buildHashParameterMap() {
    final String historyToken = History.getToken();
    Map<String, String> paramMap = new HashMap<String, String>();
    if (historyToken != null && historyToken.length() > 1) {
        for (String kvPair : historyToken.split("&")) {
            String[] kv = kvPair.split("=", 2);
            if (kv.length > 1) {
                paramMap.put(kv[0], URL.decodeQueryString(kv[1]));
            } else {
                paramMap.put(kv[0], "");
            }
        }
    }

    return paramMap;
}
2 голосов
/ 07 июня 2011

Не думайте, что в GWT есть простой анализатор строки запроса токена.Но вы можете получить необработанную строку запроса, используя:

String queryString = Window.Location.getQueryString();

Анализируйте ее так, как вам нравится.Я использую это для установки флагов отладки и т. Д.:

boolean debugMode = Window.Location.getQueryString().indexOf("debug=true") >= 0;

Обратите внимание, что изменение значений в части запроса URL (между ? и #) перезагрузит страницу.При изменении «хеш-части» URL (что-либо после #) страница не будет перезагружена.Вот почему com.google.gwt.user.client.History использует хеш-часть.

1 голос
/ 02 июля 2013

Существует встроенная поддержка для получения всех параметров.

Просто позвоните:

     Map<String, List<String>> parameterMap = Window.Location.getParameterMap();
...