2010-11-30 6 views
15

Je dois remplacer la partie protocole d'une URL déjà existante dans GWT. Le package java.net a une classe qui a été créée exactement dans ce but: URL. Malheureusement GWT does not emulate the java.net package.Remplacement GWT pour java.net.URL

Comment puis-je réassembler une URL dans GWT sans créer mon propre analyseur? (Je connais environ UrlBuilder, mais UrlBuilder ne prendra pas une URL existante)

Exemple: J'ai un URL dans une chaîne "http://myserver.com/somepath/file.html?param" et je veux remplacer la partie protocole par "https".

+2

Plus d'infos nécessaire. Qu'est-ce que vous essayez de faire exactement? – maneesh

+1

Je veux la même chose pour une raison différente. Mon hash est formaté en tant que liste de paramètres, et je veux extraire/analyser les paires clé/valeur. La réponse à ceci est la même réponse à mon problème. – Kieveli

Répondre

0

Est-ce que Window.Location vous aide? Vous pouvez lire l'URL là-bas, modifiez-la et .assign() retour.

+0

Non, puisque Window.Location n'est pas l'URL que je veux modifier. Et Window.Location ne résoudra pas le problème que je pose à propos de: modifier l'URL. –

+0

Sheesh, -1 pour ça ?! Quand la question est si claire. Comment pourrais-je être si bête que de penser que c'était l'emplacement de la fenêtre. –

+0

Ne le prenez pas personnellement. Je veux juste le marquer comme non pertinent. –

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

C'est moche, mais vous pouvez toujours créer un élément d'ancrage et extraire les pièces à partir de là.

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

a.removeFromParent();