我正在迭代一些数据并根据以下某些条件生成参数化的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时触发的事件???
更新: 亚当回答了最初问题的一部分,但我无法在“#”之后得到查询字符串。有没有比下面这个功能更好的方法:
public static String getQueryString()
{
return Window.Location.getQueryString();
}
换句话说,如果我输入example.com?service=1
,我将获得service = 1作为我的查询字符串。如果我输入example.com#?service=1
,我会获得查询字符串的空值..
答案 0 :(得分:9)
使用History.addValueChangeHandler( handler )
,并创建一个处理程序来捕获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
}
答案 1 :(得分:4)
(仅响应您的更新) 你试过吗
History.getToken()
获取“#”后的值?