6 Stimmen

Beste Praxis für die Parametrisierung der GWT-App?

Ich habe eine Google Web Toolkit (GWT)-Anwendung und wenn ich einen Link zu ihm, ich möchte einige Argumente/Parameter übergeben, die es verwenden können, um dynamisch Daten abrufen. Z.B. wenn es eine Aktienchart-Anwendung wäre, würde ich wollen, dass mein Link das Symbol enthält und dann die GWT-Anwendung lesen, dass und eine Anforderung an einige Aktien-Service machen. Z.B.. http://myapp/gwt/StockChart?symbol=GOOG wäre der Link zu meiner StockChart-GWT-App, und sie würde eine Anfrage an meinen Aktieninformations-Webdienst für die GOOG-Aktie stellen.

Bisher habe ich den serverseitigen Code verwendet, um Javascript-Variablen zur Seite hinzuzufügen, und dann habe ich diese Variablen mit JSNI (JavaScript Native Interface) gelesen.

Zum Beispiel:

In der Host-HTML:

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

Im GWT-Code:

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

(Obwohl dieser Code auf echtem, funktionierendem Code basiert, habe ich ihn für diese Frage modifiziert, so dass ich irgendwo gepatzt haben könnte)

Dies funktioniert jedoch nicht immer gut im gehosteten Modus (vor allem mit Arrays) und da JSNI in Version 1.4 und früher nicht vorhanden war, vermute ich, dass es einen anderen/besseren Weg gibt.

10voto

Drejc Punkte 13878

Wenn Sie Query-String-Parameter aus der Anfrage lesen möchten, können Sie die com.google.gwt.user.client.Window Klasse:

// 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);
}

1voto

mxro Punkte 5042

Es ist auch eine gute Möglichkeit, eine GWT-Anwendung mit Hash-Werten zu parametrisieren.

Also, statt

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

verwenden.

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

Für solche "Parameter" gibt es eine nette Tooling-Unterstützung durch GWTs Historien-Mechanismus .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X