2008-09-23 17 views
6

Mam aplikację Google Web Toolkit (GWT) i po połączeniu z nią, chcę przekazać kilka argumentów/parametrów, które mogą wykorzystać do dynamicznego pobierania danych. Na przykład. jeśli byłaby to aplikacja do wykresów giełdowych, chciałbym, aby mój link zawierał symbol, a następnie by aplikacja GWT przeczytała to i zwróciła się z prośbą do jakiejś usługi giełdowej. Na przykład. http://myapp/gwt/StockChart?symbol=GOOG byłby linkiem do mojej aplikacji StockChart GWT i wysłałby żądanie do mojego serwisu internetowego informacji giełdowych dla akcji GOOG.Najlepsza praktyka parametryzowania aplikacji GWT?

Do tej pory używałem kodu po stronie serwera, aby dodać zmienne JavaScript do strony, a następnie czytałem te zmienne za pomocą JSNI (JavaScript Native Interface).

Na przykład:

w HTML gospodarza:

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

W kodzie GWT:

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

(Chociaż ten kod jest oparty na prawdziwej kodu, który działa, mam zmodyfikowałem to na to pytanie, więc mogłem się gdzieś zgodzić)

Jednak nie zawsze tak jest działa dobrze w trybie hostowanym (zwłaszcza z tablicami) i ponieważ JSNI nie było w wersji 1.4 i wcześniejszej, domyślam się, że jest inny/lepszy sposób.

Odpowiedz

10

Jeśli chcesz odczytać parametry ciągu kwerendy z żądania można użyć com.google.gwt.user.client.Window Klasa:

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

To działa dla żądań GET. A co z parametrami POST? Na przykład, jeśli chciałbym poprosić o 200 symboli giełdowych na raz, nie chciałbym, aby wszystkie były w adresie URL –

+3

Proponuję utworzyć widget, który działa zgodnie z pewnym parametrem. Na pewno nie chcesz budować swojej strony za pomocą POST/GET, buduj jej na podstawie XML-a wysyłanego do strony (RPC) i parsuj na kliencie, aby utworzyć wszystkie widżety. Widżety następnie indywidualnie wywołują serwer, aby wyświetlić dane. – Drejc

+0

PS: Musisz przyzwyczaić się do rutynowego sposobu działania GWT (RPC) asynchronicznego (AJAX). GET i POST powinny być używane tylko do wpływania na niektóre zachowania globalne (na przykład wybór języka), ponieważ odświeża całą stronę. – Drejc

1

Jest to również dobra metoda na „parametryzacji 'aplikacja GWT używająca wartości mieszania.

Więc zamiast

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

użytku

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

Istnieją pewne miłe wsparcie oprzyrządowanie do takich 'parametrów' poprzez GWT's History Mechanism.

+0

Nie można wysłać zakotwiczonego adresu URL za pośrednictwem przekierowania –

Powiązane problemy