我需要在GWT中更换已有URL的协议部分。 java.net
包中有一个专门用于此目的的类:URL。可惜 GWT 不支持模拟 java.net 包。
如果不创建自己的解析器,我该如何在GWT中重新组装URL?(我知道UrlBuilder,但它不能接受现有的URL)
示例:我有一个字符串中的URL "http://myserver.com/somepath/file.html?param",我想将协议部分替换为"https"。
我需要在GWT中更换已有URL的协议部分。 java.net
包中有一个专门用于此目的的类:URL。可惜 GWT 不支持模拟 java.net 包。
如果不创建自己的解析器,我该如何在GWT中重新组装URL?(我知道UrlBuilder,但它不能接受现有的URL)
示例:我有一个字符串中的URL "http://myserver.com/somepath/file.html?param",我想将协议部分替换为"https"。
虽然不太美观,但是您可以创建一个锚元素并从中提取所需部分。
AnchorElement a = Document.get().createAnchorElement();
a.setHref("http://test.com/somerandompath");
Window.alert(a.getPropertyString("protocol") + " " + a.getPropertyString("host")) + " " a.getPropertyString("pathname"));
a.removeFromParent();
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);
}
Window.Location 对你有帮助吗?你可以在那里读取URL,修改它并使用 .assign()
将其返回。
Window.Location
很难算是,而且阅读问题,我们怎么可能知道它是什么?这个网站应该收集知识 - 想象一下有人谷歌搜索“GWT java.net.URL 替代”,我的答案可能对那个人有用。改正它?嗯,除了编写我们现在理解实际被要求的 UrlBuilder
解析器之外... - Martin Algesten