我目前正在构建一个基于SmartGWT的web应用程序(使用Portlet布局)。所以我有几个"Portlet",它们基本上是用不同内容扩展GWT窗口。现在我想要一个Portlet来显示Dygraphs。因此,我创建了一个RPC Service实现,它返回一个JSON字符串(基于DataTable对象)。
因为我不能直接序列化我使用DataTable对象
String json = JsonRenderer.renderDataTable(data, true, true).toString();其中"data“是DataTable类型。
现在,这个字符串被正确地传递到客户端,我想在那里创建Dygraph。在这个thread中,有人建议使用
public static native DataTable toDataTable(String json)
/-{ return new $wnd.google.visualization.DataTable(eval("(" + json + ")")); }-/;如果我在我的GWT客户端代码中使用它,我会得到一个错误消息
com.google.gwt.core.client.JavaScriptException: (TypeError): $wnd.google.visualization is undefined我是否错过了可视化API的一些“导入”?我必须在哪里实例化它?
或者,有没有其他方法可以将JSON数据串放入Dygraph?我找不到任何例子..。
谢谢你的任何提示!
发布于 2011-03-22 20:55:45
我假设您已经在模块的XML中包含了visualization.jar和可视化名称空间。
<inherits name="com.google.gwt.visualization.Visualization"/>这将为您提供类。你可能已经这样做了,否则你会得到一个编译器错误。
但是,您还必须包含来自google服务器的实际可视化javascript文件( visualization.jar只是一个包装器)。这可以通过两种不同的方式来完成:
1.)将其包含在主页中:
<script type="text/javascript">
google.load("visualization", "1", {'packages' : ["corechart"] });
</script>或
2.)在您需要的地方动态加载它:
VisualizationUtils.loadVisualizationApi(onLoadCallback, MotionChart.PACKAGE);请参阅http://code.google.com/docreader/#p=gwt-google-apis&s=gwt-google-apis&t=VisualizationGettingStarted
顺便说一句。我已经派生了Dygraphs项目,并将GWT包装器更改为更像其他可视化包装器。你可以在这里查看:https://github.com/timeu/dygraphs
我有一个新的包装器,它使用GWT2.8的新JsInterop:https://github.com/timeu/dygraphs-gwt
注意:我更改了dygraphs中的一些行为,并添加了一些上游代码中没有的功能。
https://stackoverflow.com/questions/5380343
复制相似问题