我必须替换GWT中现有url的协议部分。 java.net
包有一个专门为此目的而构建的类:URL。可悲的是GWT does not emulate the java.net package。
如何在不创建自己的解析器的情况下在GWT中重新组合URL? (我知道UrlBuilder,但UrlBuilder不会使用现有的网址)
示例:我在字符串“http://myserver.com/somepath/file.html?param”中有一个网址,我想用“https”替换协议部分。
答案 0 :(得分:6)
public void onModuleLoad() {
Button btn = new Button("change protocol");
btn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
UrlBuilder builder = Window.Location.createUrlBuilder().setProtocol("https");
Window.Location.replace(builder.buildString());
}
});
RootPanel.get().add(btn);
}
答案 1 :(得分:6)
这很难看,但你总是可以创建一个锚元素并从那里提取部分。
AnchorElement a = Document.get().createAnchorElement();
a.setHref("http://test.com/somerandompath");
Window.alert(a.getPropertyString("protocol") + " " + a.getPropertyString("host")) + " " a.getPropertyString("pathname"));
a.removeFromParent();
答案 2 :(得分:0)
Window.Location对你有帮助吗?你可以在那里读出URL,修改它并.assign()
回来。