2010-07-29 61 views
4

我循环通过一些数据和生成参数化URL链接基于这样一些条件:变化URL触发事件在GWT

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我获得服务= 1作为查询字符串我。如果我输入example.com#?service=1,则查询字符串会得到空值。

回答

9

使用History.addValueChangeHandler(handler),并创建处理程序以捕获URL更改。

无需点击处理程序等,URL中“散列”部分的任何更改就足够了。

编辑:

看到这个代码示例 - 它将解析形式的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 
} 
+0

感谢亚当,我实现了History.addHistoryListener,它正在响应URL中的更改。然而,现在我查找Querystring的函数无法看到'#'之后的任何内容。是否有另一种方法来获取整个Querystring? – tpow 2010-08-02 20:12:00

+0

我编辑了我的答案,添加了一个有效的代码示例。 – adamk 2010-08-02 21:48:30

4

(只是回应你的更新) 你试过

History.getToken() 

获取“#”后面的值?

相关问题