2010-11-30 29 views
15

Tengo que reemplazar el protocolo parte de una url ya existente en GWT. El paquete java.net tiene una clase creada exactamente para ese propósito: URL. Tristemente GWT does not emulate the java.net package.Reemplazo GWT para java.net.URL

¿Cómo puedo volver a armar una url en GWT sin crear mi propio analizador? (Sé de UrlBuilder, pero UrlBuilder no tomará una URL existente)

Ejemplo: Tengo una url en una cadena "http://myserver.com/somepath/file.html?param" y quiero reemplazar la parte del protocolo por "https".

+2

Más información necesaria por favor. ¿Qué estás tratando de hacer exactamente? – maneesh

+1

Quiero lo mismo por una razón diferente. Mi hash está formateado como una lista de parámetros, y quiero extraer/analizar los pares clave/valor. La respuesta a esto es la misma respuesta a mi problema. – Kieveli

Respuesta

0

¿Lo ayuda Window.Location? Puede leer la URL allí, modificarla y .assign() volver.

+0

No, ya que Window.Location no es la url que deseo modificar. Y Window.Location no resolverá el problema que estoy preguntando: modificar la url. –

+0

Sheesh, -1 para eso ?! Cuando la pregunta es tan clara ¿Cómo podría ser tan tonto como para pensar que era la ubicación de la ventana? –

+0

No lo tome como algo personal. Solo quiero marcarlo como irrelevante. –

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

Es feo, pero siempre puedes crear un elemento de anclaje y extraer las partes desde allí.

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

a.removeFromParent();