2010-11-30 8 views
15

GWTの既存のURLのプロトコル部分を置き換える必要があります。 java.netパッケージには、その目的のために構築されたクラスがあります:URL。悲しいことにGWT does not emulate the java.net packagejava.net.URLのGWT置換

自分のパーサーを作成せずにGWTでURLを再構築するにはどうすればよいですか? (私はUrlBuilderについて知っていますが、UrlBuilderは既存のURLを受け取りません)

例:私は文字列 "http://myserver.com/somepath/file.html?param"にURLを持っています。プロトコル部分を "https"に置き換えたいと思います。

+2

さらに詳しい情報が必要です。あなたは正確に何をしようとしていますか? – maneesh

+1

私は別の理由で同じことが欲しいです。私のハッシュはパラメータリストとしてフォーマットされており、キー/値のペアを抽出/解析したい。これに対する答えは私の問題と同じ答えです。 – Kieveli

答えて

0

Window.Locationはまったくお役に立ちますか?そこにあるURLを読むことができます。それには.assign()が戻ってきます。

+0

いいえ、Window.Locationは変更したいURLではありません。そしてWindow.Locationは、私が求めている問題を解決することはできません:URLを変更する。 –

+0

シース、-1のために?質問がとても分かりやすいとき。どのように私はおそらくそれがウインドウの場所だと思うようにばかげている可能性があります。 –

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

醜いですが、アンカー要素を作成してそこから部分を抽出することはいつでも可能です。

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

a.removeFromParent();