我正在处理gwt应用程序,为此,我正在使用“锚点”,我完全希望在不刷新页面的情况下更改我的内容,并且浏览器也会更新url
您可能想使用Activities and Places
基本上,框架使您可以使用Places
导航至PlaceController
。这不会触发整个页面的重新加载,但会更改当前显示的视图。
实际上,Place
调用匹配的Activity
,即页面的“大脑”。然后,活动可以将View
添加到页面。 View
包含尽可能少的逻辑,并假定可容纳所有用户界面。 View
实际上应该是ViemImplementation
可以实现的接口,因此您可以为同一Activity
(例如台式机,手机,平板电脑)使用鬃毛视图。
活动和地方需要很多样板。
如果只想更新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/#!/panelone。 onValueChange
方法注册URL已更新并处理随后发生的情况,例如显示另一个窗口。 Hashbang(#!)用于使站点seo友好(请参阅Better SEO with GWT)
编辑:添加了seo内容和示例