2008-09-23 17 views
6

Je dispose d'une application Google Web Toolkit (GWT) et lorsque je l'utilise, je souhaite transmettre certains arguments/paramètres pouvant être utilisés pour récupérer des données de manière dynamique. Par exemple. S'il s'agissait d'une application de graphique boursier, je voudrais que mon lien contienne le symbole et que l'application GWT le lise et fasse une demande à un service de stock. Par exemple. http://myapp/gwt/StockChart?symbol=GOOG serait le lien vers mon application StockChart GWT et il ferait une demande à mon service Web d'informations boursières pour le stock de GOOG. Jusqu'ici, j'ai utilisé le code côté serveur pour ajouter des variables Javascript à la page, puis j'ai lu ces variables en utilisant JSNI (JavaScript Native Interface).Meilleure pratique pour le paramétrage de l'application GWT?

Par exemple:

Dans le HTML hôte:

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

Dans le code GWT:

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

(Bien que ce code est basé sur le code réel qui fonctionne, j'ai modifié pour cette question afin que j'aie pu goofed quelque part)

Cependant, cela ne veut pas toujours fonctionne bien en mode hébergé (en particulier avec les tableaux) et puisque JSNI n'était pas dans la version 1.4 et précédente, je suppose qu'il y a une autre/meilleure façon.

Répondre

10

Si vous voulez lire les paramètres de chaîne de requête de la demande, vous pouvez utiliser le com.google.gwt.user.client.Window classe:

// 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

Cela fonctionne pour les requêtes GET. Qu'en est-il des paramètres POST? Par exemple, si je voulais demander 200 symboles boursiers à la fois, je ne voudrais pas tous les dans l'URL –

+3

Je suggère de créer un widget qui agit en fonction de certains paramètres. Vous ne voulez certainement pas construire votre page avec POST/GET, le construire sur un envoi XML à la page (RPC) et analysé sur le client pour créer tous les widgets. Les widgets appellent alors individuellement le serveur pour obtenir les données affichées. – Drejc

+0

PS: Vous devez vous habituer à la façon de faire GWT (RPC) asynchrounous (AJAX). GET et POST ne doivent être utilisés que pour influencer un comportement global (par exemple la sélection de la langue) car il recharge toute la page. – Drejc

1

Il est également une option intéressante pour « paramétrons 'une application GWT utilisant des valeurs de hachage.

Ainsi, au lieu de

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

utilisation

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

Il y a un certain soutien d'outillage agréable pour ces 'paramètres' par GWT's History Mechanism.

+0

Vous ne pouvez pas envoyer une URL hachée via une redirection –