参数化GWT应用程序的最佳实践?

时间:2008-09-23 16:25:39

标签: gwt

我有一个Google Web Toolkit(GWT)应用程序,当我链接到它时,我想传递一些可用于动态检索数据的参数/参数。例如。如果它是股票图表应用程序,我希望我的链接包含符号,然后让GWT应用程序读取并向某些股票服务发出请求。例如。 http://myapp/gwt/StockChart?symbol=GOOG将成为我的StockChart GWT应用程序的链接,它将向我的股票信息网络服务请求GOOG股票。

到目前为止,我一直在使用服务器端代码将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和之前版本中并不存在,我猜测还有另一种/更好的方法。

2 个答案:

答案 0 :(得分:10)

如果您想从请求中读取查询字符串参数,可以使用 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);
}   

答案 1 :(得分:1)

使用哈希值'参数化'GWT应用程序也是一个很好的选择。

所以,而不是

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

使用

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

通过GWT's History Mechanism为这些'参数'提供了一些很好的工具支持。