2010-11-30 22 views
15

GWT'de zaten var olan bir URL'nin protokol kısmını değiştirmem gerekiyor. java.net paketinin tam olarak bu amaçla oluşturulmuş bir sınıfı vardır: URL. Ne yazık ki GWT does not emulate the java.net package.GWT değiştirme

Kendi çözümleyicimi oluşturmadan GWT'de bir URL'yi nasıl yeniden birleştirebilirim? (UrlBuilder'u biliyorum, ancak UrlBuilder varolan bir URL'yi alamaz)

Örnek: "http://myserver.com/somepath/file.html?param" dizesinde bir URL var ve protokol bölümünü "https" ile değiştirmek istiyorum.

+2

Daha fazla bilgi gerekli lütfen. Tam olarak ne yapmaya çalışıyorsun? – maneesh

+1

Aynı şeyi farklı bir sebepten istiyorum. Benim hash bir parametre listesi olarak biçimlendirilmiştir ve anahtar/değer çiftlerini ayıklamak/ayrıştırmak istiyorum. Bunun cevabı benim sorunumun aynısı. – Kieveli

cevap

0

Window.Location size yardımcı oluyor mu? URL'yi buradan okuyabilir, modifiye edebilir ve .assign() geri alabilirsiniz.

+0

Hayır, Window.Location değiştirdiğim url değil. Ve Window.Location, şu soruyu sorduğum soruyu çözmeyecek: URL'yi değiştirmek. –

+0

Sheesh, -1 bunun için mi ?! Soru çok açık olduğunda. Pencerenin yeri olduğunu düşünmek için nasıl bu kadar aptal olabilirim. –

+0

Kişisel olarak alma. Sadece bunu alakasız olarak işaretlemek istiyorum. –

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

Çirkin, ancak her zaman bir bağlantı elemanı oluşturabilir ve parçaları buradan çıkarabilirsiniz.

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

a.removeFromParent();