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

参数化GWT应用程序的最佳实践?,gwt,Gwt,我有一个GoogleWebToolkit(GWT)应用程序,当我链接到它时,我想传递一些参数,它可以用来动态检索数据。例如,如果它是一个股票图表应用程序,我希望我的链接包含该符号,然后让GWT应用程序读取该符号,并向某个股票服务发出请求。例如,将是指向我的StockChart GWT应用程序的链接,它将向我的股票信息web服务请求GOOG股票 到目前为止,我一直在使用服务器端代码向页面添加Javascript变量,然后使用JSNI(Javascript本机接口)读取这些变量 例如: 在主机HTM

我有一个GoogleWebToolkit(GWT)应用程序,当我链接到它时,我想传递一些参数,它可以用来动态检索数据。例如,如果它是一个股票图表应用程序,我希望我的链接包含该符号,然后让GWT应用程序读取该符号,并向某个股票服务发出请求。例如,将是指向我的StockChart GWT应用程序的链接,它将向我的股票信息web服务请求GOOG股票

到目前为止,我一直在使用服务器端代码向页面添加Javascript变量,然后使用JSNI(Javascript本机接口)读取这些变量

例如:

在主机HTML中:

<script type="text/javascript">
  var stockSymbol = '<%= request.getParameter("symbol") %>';
</script>   
(虽然这段代码是基于真正有效的代码,但我已经针对这个问题修改了它,所以我可能在某个地方搞错了)


然而,这在托管模式下并不总是很好地工作(特别是对于阵列),而且由于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
使用


通过。

有一些很好的工具支持此类“参数”,可用于GET请求。POST参数呢?例如,如果我想一次请求200个股票符号,我不希望它们都出现在URL中,我建议创建一个根据某个参数进行操作的小部件。当然,您不希望使用POST/GET构建页面,而是将其构建在XML发送到页面(RPC)的基础上,并在客户端上进行解析以创建一个all窗口小部件。然后,小部件单独调用服务器以获取显示的数据。PS:您必须习惯GWT(RPC)异步(AJAX)方式。GET和POST只应用于在重新加载整个页面时影响某些全局行为(例如语言选择)。这确实是一个引导问题。加载应用程序后,如果不可用,我将使用GWT RPC或HTTP请求。这个问题源于我当前的项目,这是一个基于用户选择显示项目的应用程序。有大量的项目可供选择,POST是一个自然的选择。是的,这是一个很好的解决方案,尤其是当你想有一个HTML版本的facebook、G+或google crawler来获取信息,并且你想让用户在点击链接时进入真正的GWT页面。顺便问一下,您如何检测是facebook还是想要查看链接的用户?我想使用“用户代理”信息,但这意味着我必须把所有可能的浏览器值,忽略我不理解的爬虫。。。无法通过重定向发送哈希url
 http://myapp/gwt/StockChart?symbol=GOOG
 http://myapp/gwt/StockChart#symbol=GOOG