我是GWT的新手,但我做了足够的搜索,了解我可以使用历史机制在GWT中做书签。
但是当我需要将它们应用于用户搜索查询时,我仍然感到困惑。 例如主页面可能有多个选项卡(我可以使用历史记录机制为选项卡添加书签)。 用户导航到特定选项卡并执行一些搜索查询后。现在,如果他希望为此搜索结果URL添加书签,我该如何使用GWT。
我尝试过的一些选项:GWT HyperLinks Widgets,Anchors,UrlBuilder 但我真的不确定最方便的一个。
任何输入都会非常感激。
答案 0 :(得分:1)
您应该阅读有关GWT历史记录的文档here。
作为您案例的示例,假设您想要记住用户所在的选项卡(参数t)以及用户搜索的查询(参数q)。你会在你的网址中输入类似
的内容T = 2及Q =你好
然后加载GWT模块。检查网址,看看这些参数是否在这里。如果是,请解析它们以加载正确的选项卡并进行搜索。如果没有,请从头开始加载。理论代码示例:
private int selectedTab;
private String query;
public void onModuleLoad() {
String token = History.getToken();
if (!Strings.isNullOrEmpty(token)) {
// parse the history token
String t = token.substring(2,3);
String q = token.substring(6, token.length());
int tabIndex = Integer.valueOf(t);
setSelectedTab(tabIndex);
search(q);
} else {
// init from scratch
setSelectedTab(0);
}
// Add a listener to your tab panel, to change the History token everytime the
tab changes
tabPanel.addSelectionHandler(new SelectionHandler<Integer>(){
public void onSelection(SelectionEvent<Integer> event) {
selectedTab = event.getSelectedItem();
setSelectedTab(selectedTab);
changeHistoryToken();
}});
// Add listeners for your search query stuff
}
private void changeHistoryToken() {
History.newItem("t=" + selectedTab + "&q=" + query);
}
private void setSelectedTab(int index) {
// Set the selected tab
}
关键是,每次应用程序的状态发生变化时,都会向History添加一个新项目。此项是表示应用程序状态的字符串。然后,在加载应用程序时,请检查此令牌是否在此处。如果是,则通过解析令牌并设置正确的值来初始化您的应用程序(选定的选项卡,搜索查询,等等)。如果没有历史记录令牌,则使用默认值初始化。
不要忘记通过将此iframe添加到您的网页来启用历史记录支持:
<iframe src="javascript:''"
id="__gwt_historyFrame"
style="width:0;height:0;border:0"></iframe>
答案 1 :(得分:0)
您还可以使用历史记录机制来存储搜索查询。您的网址可能如下所示:
http://host.html#tab=<tabname>;search=<query>
如果您使用HyperLink小部件,则会自动更新历史记录。