2008-09-23 16 views
6

Tengo una aplicación de Google Web Toolkit (GWT) y cuando me conecto a ella, quiero pasar algunos argumentos/parámetros que puede usar para recuperar datos dinámicamente. P.ej. si fuera una aplicación de gráfico de acciones, me gustaría que mi enlace contenga el símbolo y luego haga que la aplicación GWT lo lea y haga una solicitud a algún servicio de stock. P.ej. http://myapp/gwt/StockChart?symbol=GOOG sería el enlace a mi aplicación StockChart GWT y haría una solicitud a mi servicio web de información bursátil para el stock de GOOG.¿La mejor práctica para parametrizar la aplicación GWT?

Hasta ahora, he estado usando el código del lado del servidor para agregar variables de Javascript a la página y luego he leído esas variables usando JSNI (JavaScript Native Interface).

Por ejemplo:

En el código HTML de acogida:

<script type="text/javascript"> 
    var stockSymbol = '<%= request.getParameter("symbol") %>'; 
</script> 

En el código GWT:

public static native String getSymbol() /*-{ 
    return $wnd.stockSymbol; 
}-*/; 

(Aunque este código se basa en código real que funciona, no tengo lo modifiqué para esta pregunta, así que podría haberme equivocado en alguna parte)

Sin embargo, esto no siempre funcionan bien en modo hospedado (especialmente con arreglos) y como JSNI no existía en la versión 1.4 y anteriores, supongo que hay otra/mejor manera.

Respuesta

10

Si desea leer parámetros de cadena de consulta de la petición se puede utilizar el com.google.gwt.user.client.Window clase:

// returns whole query string 
public static String getQueryString() 
{ 
    return Window.Location.getQueryString(); 
} 

// returns specific parameter 
public static String getQueryString(String name) 
{ 
    return Window.Location.getParameter(name); 
} 
+0

Eso funciona para solicitudes GET. ¿Qué pasa con los parámetros POST? Por ejemplo, si quisiera solicitar 200 símbolos de acciones a la vez, no los quisiera todos en la URL –

+3

. Sugeriría crear un widget que actúe de acuerdo con algún parámetro. Ciertamente no desea construir su página con POST/GET, compilarla en un envío XML a la página (RPC) y analizarla en el cliente para crear todos los widgets. A continuación, los widgets llaman individualmente al servidor para que se muestren los datos. – Drejc

+0

PD: debe acostumbrarse a la manera asincrónica (AJAX) de GWT (RPC) de hacer las cosas. GET y POST solo deben usarse para influir en algún comportamiento global (por ejemplo, selección de idioma) a medida que vuelve a cargar toda la página. – Drejc

1

También es una buena opción para 'parametrizar 'una aplicación GWT que usa valores hash.

Así, en lugar de

http://myapp/gwt/StockChart?symbol=GOOG 

uso

http://myapp/gwt/StockChart#symbol=GOOG 

Hay algún buen soporte de herramientas para este tipo de 'parámetros' a través de GWT's History Mechanism.

+0

No puede enviar una URL hash a través de una redirección –

Cuestiones relacionadas