Pregunta

Tengo una aplicación Google Web Toolkit (GWT) y cuando la vinculo, quiero pasar algunos argumentos/parámetros que pueda usar para recuperar datos dinámicamente.P.ej.Si fuera una aplicación de gráfico de acciones, me gustaría que mi enlace contuviera el símbolo y luego que la aplicación GWT lo leyera y realizara una solicitud a algún servicio de bolsa.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 las acciones de GOOG.

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

Por ejemplo:

En el HTML del host:

<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, lo modifiqué para esta pregunta, por lo que es posible que haya cometido un error en alguna parte)

Sin embargo, esto no siempre funciona bien en modo alojado (especialmente con matrices) y dado que JSNI no existía en la versión 1.4 y anteriores, supongo que hay otra manera mejor.

¿Fue útil?

Solución

Si desea leer los parámetros de la cadena de consulta de la solicitud, 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);
}   

Otros consejos

También es una buena opción "parametrizar" una aplicación GWT utilizando valores hash.

Entonces, en lugar de

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

usar

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

Existe un buen soporte de herramientas para tales 'parámetros' a través de Mecanismo histórico de GWT.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top