質問
Google Web Toolkit (GWT) アプリケーションがあり、それにリンクするときに、データを動的に取得するために使用できるいくつかの引数/パラメータを渡したいと考えています。例えば。それが株価チャート アプリケーションであれば、リンクにシンボルを含めて、GWT アプリにそれを読み取って株式サービスにリクエストを行わせる必要があります。例えば。 http://myapp/gwt/StockChart?symbol=GOOG これは私の StockChart GWT アプリへのリンクであり、GOOG 株の株式情報 Web サービスにリクエストを送信します。
これまで、サーバー側のコードを使用して Javascript 変数をページに追加し、JSNI (JavaScript Native Interface) を使用してそれらの変数を読み取りました。
例えば:
ホスト HTML 内:
<script type="text/javascript">
var stockSymbol = '<%= request.getParameter("symbol") %>';
</script>
GWT コードでは次のようになります。
public static native String getSymbol() /*-{
return $wnd.stockSymbol;
}-*/;
(このコードは動作する実際のコードに基づいていますが、この質問用に変更したので、どこかで間違っている可能性があります)
ただし、これはホスト モード (特に配列) では常にうまく機能するとは限りません。また、JSNI はバージョン 1.4 以前には存在しなかったため、別の/より良い方法があると思います。
解決
リクエストからクエリ文字列パラメータを読み取りたい場合は、 com.google.gwt.user.client.Window クラス:
// 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);
}
他のヒント
ハッシュ値を使用して GWT アプリケーションを「パラメータ化」することも良いオプションです。
したがって、代わりに
http://myapp/gwt/StockChart?symbol=GOOG
使用
http://myapp/gwt/StockChart#symbol=GOOG
このような「パラメータ」をサポートする優れたツールがいくつかあります。 GWT の履歴メカニズム.