如何在gwt应用程序中处理多个页面

时间:2015-07-07 13:22:00

标签: gwt

我正在使用我正在使用的gwt应用程序" Anchor"为此,我确实希望没有页面刷新我的内容应该更改,浏览器也会更新网址

由于

2 个答案:

答案 0 :(得分:1)

您可能想要使用Activities and Places

基本上,框架允许您使用Places导航到PlaceController。这不会触发整页重新加载,但会更改当前显示的视图。

事实上,Place会调用匹配的Activity,这是页面的“大脑”。然后,该活动可以将View添加到页面。 View包含尽可能少的逻辑,并且假设保留所有用户界面。 View实际上应该是ViemImplementation可以实现的界面,因此您可以为同一Activity(例如桌面,移动设备,平板电脑)设置鬃毛视图。

答案 1 :(得分:0)

活动和地方需要很多样板。

如果您只想更新网址,请使用the GWT History Mechanism。  CodeExample:

public App implements ValueChangeHandler<String>{
    // listen for the History Change Events
    History.addValueChangeHandler(this);

    private void showPanelOne(){
        container.clear();
        container.add(new Panel());
    }

    private void showPanelTwo(){
        container.clear();
        container.add(new Panel());
    }

    public void onValueChange(ValueChangeEvent<String> event) {
        String token = event.getValue();   
        if (token != null) {
            if (token.contains(Tokens.PANELONE)) {
                showPanelOne()
            } else if (token.contains(Tokens.PANELTWO)) {
                showPanelTwo()
            }
        } else {
            //show default panel or just do nothing?
        }
    }
}  

public class Tokens {
    public final static String PANELONE = "!/panelone";
    public final static String PANELTWO = "!/paneltwo";
}

更改网址

1)调用:

History.newItem(Tokens.PANELTWO)

2)在UI活页夹中使用HTML:

<a href="#{Tokens.PANELONE}">Show PanelOne</a>

这将更改#看起来像 http://test.com/#!/panelone 之后的部分。 onValueChange方法注册URL更新并处理发生的事情,例如显示另一个窗口。 Hashbang(#!)用于使网站seo友好(请参阅Better SEO with GWT

更新网址的seo友好主页的示例源代码可以找到here

编辑:seo的东西和示例添加