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

问题描述 投票:0回答:2

我正在处理gwt应用程序,为此,我正在使用“锚点”,我完全希望在不刷新页面的情况下更改我的内容,并且浏览器也会更新url

gwt
2个回答
1
投票

您可能想使用Activities and Places

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

实际上,Place调用匹配的Activity,即页面的“大脑”。然后,活动可以将View添加到页面。 View包含尽可能少的逻辑,并假定可容纳所有用户界面。 View实际上应该是ViemImplementation可以实现的接口,因此您可以为同一Activity(例如台式机,手机,平板电脑)使用鬃毛视图。


0
投票

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

如果只想更新URL,则应使用the GWT History Mechanism。代码示例:

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";
}

仅更改URL

1)通话:

History.newItem(Tokens.PANELTWO)

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

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

这将更改#之后的部分,外观类似于[[http://test.com/#!/paneloneonValueChange方法注册URL已更新并处理随后发生的情况,例如显示另一个窗口。 Hashbang(#!)用于使站点seo友好(请参阅Better SEO with GWT

您可以找到here来更新URL的seo友好主页的示例源代码。

编辑:添加了seo内容和示例

© www.soinside.com 2019 - 2024. All rights reserved.