0

我是 GWT 的新手,但我做了足够的搜索以了解我可以使用历史机制在 GWT 中做书签。

但是当我需要将书签应用于用户搜索查询时,我仍然感到困惑。例如,主页可能有几个标签(我可以在这里使用历史记录机制来为标签添加书签)。在用户导航到特定选项卡并执行一些搜索查询之后。现在,如果他希望将此搜索结果 URL 加入书签,我该如何使用 GWT 来做到这一点。

我尝试了一些选项:GWT HyperLinks Widgets、Anchors、UrlBuilder 但我真的不确定最方便的一个。

任何输入将不胜感激。

4

2 回答 2

1

您应该在此处阅读有关 GWT 历史的文档。

作为您的案例的示例,假设您想记住用户在哪个选项卡上(参数 t)以及用户搜索的查询(参数 q)。您将输入您的网址,例如

t=2&q=你好

然后当您的 GWT 模块正在加载时。检查 url 以查看这些参数是否在此处。如果是,请解析它们以加载正确的选项卡并进行搜索。如果没有,请从头开始加载。示例理论代码:

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
}

关键是,每次应用程序的状态发生变化时,都会向历史记录添加一个新项目。此项目是一个字符串,表示您的应用程序的状态。然后,当您加载应用程序时,请检查此令牌是否在此处。如果是,请通过解析令牌并设置正确的值(选择的选项卡、搜索查询等)来初始化您的应用程序。如果没有历史令牌,则使用默认值初始化。

不要忘记通过将此 iframe 添加到您的页面来启用历史记录支持:

 <iframe src="javascript:''"
      id="__gwt_historyFrame"
      style="width:0;height:0;border:0"></iframe>
于 2012-06-05T08:41:44.837 回答
0

您还可以使用历史记录机制来存储搜索查询。您的网址可能如下所示:

  http://host.html#tab=<tabname>;search=<query>

如果您使用超链接小部件,历史记录会自动更新。

于 2012-06-05T07:12:44.410 回答