Замена GWT для java.net.URL

Мне нужно заменить часть протокола уже существующего url в GWT. Пакет java.net имеет класс, который был создан именно для этой цели: URL. К сожалению GWT не эмулирует пакет java.net.

Как я могу собрать url в GWT без создания собственного анализатора? (Я знаю о UrlBuilder, но UrlBuilder не будет использовать существующий URL-адрес)

Пример: у меня есть url в строке " http://myserver.com/somepath/file.html?param", и я хочу заменить часть протокола на "https".

Ответы

Ответ 1

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

Ответ 2

Это некрасиво, но вы всегда можете создать элемент привязки и извлечь части оттуда.

AnchorElement a = Document.get().createAnchorElement();
a.setHref("http://test.com/somerandompath");
Window.alert(a.getPropertyString("protocol") + " " + a.getPropertyString("host")) + " " a.getPropertyString("pathname"));

a.removeFromParent();

Ответ 3

Помогает ли вам Window.Location? Вы можете прочитать URL-адрес там, изменить его и .assign() вернуть.