在GWT中使用Query String

时间:2011-06-07 06:47:03

标签: gwt query-string

我必须创建一个动态URL,其中包含用户ID和电子邮件参数,这些参数将直接在我的GWT应用程序中注册表单。我想在查询字符串中设置并获取参数。我已经提到了t http://code.google.com/p/gwt-examples/source/browse/trunk/System/src/com/gawkat/gwt/system/client/global/QueryString.java?r=1241但是这里的QueryStringData对我的项目来说是不可访问的。请告诉我如何才能做到这一点?任何替代方案也可以帮助我。

4 个答案:

答案 0 :(得分:14)

@Stein,但是(GWT中有一个查询参数标记器):例如Window.Location.getParameter("debug")将返回参数debug的字符串值。

答案 1 :(得分:2)

不要认为GWT中有一个简单的标记化查询字符串解析器。但您可以使用以下命令获取原始查询字符串:

String queryString = Window.Location.getQueryString();

以任何你喜欢的方式解析它。我像这样使用它来设置调试标志等。:

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

请注意,更改网址的查询部分(?#之间)中的值会重新加载页面。更改URL的“哈希部分”(#之后的任何内容)将不会重新加载页面。这就是com.google.gwt.user.client.History使用散列部分的原因。

答案 2 :(得分:2)

如果你真的想要解析历史令牌(哈希部分)来编码参数,这里是代码:

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;
}

答案 3 :(得分:1)

内置支持获取所有参数。

只需致电:

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