2011-03-23 21 views

Respuesta

7

¿Por qué estás tratando de hacer esto? En general, las aplicaciones GWT no cambian de página, por lo que normalmente son SPAs (aplicaciones de una sola página)

Cuando carga una página nueva desde un servidor, perderá el estado en esa página. Puede cambiar la parte hash de la URL, que no volverá al servidor, así:

String newURL = Window.Location.createUrlBuilder().setHash("newhash").buildString(); 
Window.Location.replace(newURL); 

Sin embargo, si usted va a hacer esto, recomiendo echar un vistazo a MVP marco de GWT , que ha incorporado soporte para administrar ubicaciones usando tokens hash.

http://code.google.com/webtoolkit/doc/latest/DevGuideMvpActivitiesAndPlaces.html

+0

Gracias por una respuesta útil. Necesito cambiar la URL sin enviar, para que el usuario pueda copiar esto y darle a un amigo. Por ejemplo, wikimapia.org se establece en las coordenadas actuales de la URL http://wikimapia.org/#lat=54.3885546&lon=25.9799194&z=11&l=0&m=b – user672649

+0

Esto me ayudó porque tengo un enlace que llama a otra aplicación GWT. Estoy usando Window.Location.assign() Gracias chicos! – agentcurry

9

Si desea cambiar algo que no está en el hash, por ejemplo, desea cambiar un parámetro en la URL, puede hacerlo de esta manera!

private void someMethod() { 
    String newURL = Window.Location.createUrlBuilder().setParameter("someParam", "someValue").buildString(); 
    updateURLWithoutReloading(newURL); 
} 

private static native void updateURLWithoutReloading(String newUrl) /*-{ 
    $wnd.history.pushState(newUrl, "", newUrl); 
}-*/; 

Posteriormente, se podría registrar una función que maneja el usuario utilizando los botones de atrás y adelante del navegador como se ha demostrado here.

+1

Esta es realmente la respuesta correcta, la marcada como correcta causa una recarga. –

2
$wnd.history.pushState(newUrl, "", newUrl); 

Funciona muy bien en los navegadores HTML5. ¡No en IE8 o IE9!