我希望如果有人可以在这个问题上帮助我,
在 GWT 中更改页面时如何更改地址栏内容?(例如:关于 Aboutus www.mysite.com/aboutus)
此外,如果用户在地址栏 (www.mysite.com/aboutus) 中键入 GWT 应用程序,是否会将其转发到 Aboutus 页面?
谢谢
您可以使用活动和地点。这是一种构建 Web 应用程序的方法。应用程序将按场所、视图和活动进行组织,视图仅包含构建界面的代码,活动包含视图实际执行的操作。每个地点/活动/视图对应一个 URL。对于某些应用程序,这是一种简单方便的组织方式。
通过JSNI
,就可以找到了URL
。
public static native String getURL()
/*-{
var x = "URL: " + location.href;
alert(x);
}-*/;
你也可以试试
newPageButton.addClickHandler(new ClickHandler() {
public void onClick(final ClickEvent event) {
History.newItem("customer");
}
});
您应该使用小部件进行如下导航:
Anchor nameLink = new Anchor();
nameLink.setText(rec.get("userSeq") + " / " + rec.get("userName"));
nameLink.getElement().setAttribute("style", "padding: 5px;");
String url = GWT.getHostPageBaseURL() + GWT.getModuleName() + ".html";
if (GWT.getHostPageBaseURL().contains("localhost") || GWT.getHostPageBaseURL().contains("127.0.0.1")) {
url = url + "?gwt.codesvr=127.0.0.1:9997";
}
nameLink.getElement().setAttribute("style", "padding: 10px;");
nameLink.getElement().setAttribute("href", url + "#customer");
并且您的控制器或演示者类应该实现ValueChangeHandler<String>
,例如
public final void onValueChange(final ValueChangeEvent<String> event) {
String token = event.getValue();
if (token != null) {
String[] tokens = History.getToken().split(":");
final String token1 = tokens[0];
final String token2 = tokens.length > 1 ? tokens[1] : "";
if (token1.equals("customer")) {
GWT.runAsync(new RunAsyncCallback() {
public void onFailure(final Throwable caught) {
}
public void onSuccess() {
CustomerAuctionView view = CustomerAuctionView.getInstance(service);
CustomerAuctionPresenter presenter = CustomerAuctionPresenter.getInstance(service, eventBus, view);
presenter.run();
}
});
}
}
地址栏是根据您的网页设置的,因此如果您有,请说:welcome.html
您必须将此脚本放入其中:
<script type="text/javascript" language="javascript" src="module/welcome.nocache.js"></script>
src attr 是指模块中的入口类(这里的模块是指:module.gwt.xml
文件)
所以这个脚本将你的 html 页面与用 GWT Java EntryClass 编写的逻辑连接起来
代表您的“ aboutus
” 的模块,www.mysite.com/aboutus
因此如果您有与此模块相关的页面,您将在以下位置找到它:
www.mysite.com/aboutus/this_is_html_related_to_aboutus_module.html
所以这都是一对一的:一页对一模块
或多对一:一个页面中的多个 div 标签和更多逻辑(if-else)
来指定任何一段代码将匹配合适的 div 一个