更改URL以在GWT中触发事件

tpo*_*pow 4 gwt

我正在迭代一些数据并基于以下某些条件生成参数化URL链接:

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

在页面加载/刷新时,我的应用程序开始检查URL参数,并根据参数是否存在以及它们是什么来采取一些操作.

但是,我在参数的开头添加了#,因此页面不需要刷新,但现在它不会触发检查URL的函数.

我的问题是当用户点击链接时如何在GWT中触发事件?我是否需要生成GWT控件并链接单击处理程序?是否可以设置在URL更改时触发的事件???

更新: 亚当回答了最初问题的一部分,但我无法在"#"之后得到查询字符串.有比下面的功能更好的方法:

public static String getQueryString() 
 {
     return Window.Location.getQueryString();
 }
Run Code Online (Sandbox Code Playgroud)

换句话说,如果我输入,example.com?service=1我将获得service = 1作为我的查询字符串.如果我输入example.com#?service=1,我得到查询字符串的空值.

ada*_*amk 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
}
Run Code Online (Sandbox Code Playgroud)