我正在迭代一些数据并基于以下某些条件生成参数化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,我得到查询字符串的空值.
使用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)
| 归档时间: |
|
| 查看次数: |
2580 次 |
| 最近记录: |