我按照这篇文章使用主机页将数组传递给客户端:
https://developers.google.com/web-toolkit/articles/dynamic_host_page
目前,我可以在firebug中看到关注内容
<html style="overflow: hidden;">
<head>
......
<script type="text/javascript">
var rcmdFriends=[{"Name":"Friend-0","Image":"url"}];
</script>
</head>
......
</html>
然后我尝试使用这些代码从主机页面获取 js 变量(实际上是一个 json 数组)并将其打印给用户:
//get array from host page
private native JsArrayExt<People> getRecommendedFriends()/*-{
return $wnd.rcmdFriends;
}-*/;
@Override
public void onModuleLoad()
{
final FlowPanel fPanel = new FlowPanel();
JsArrayExt<People> channels = getRecommendedFriends();
for (int i = 0, len = channels.length(); i < len; i++)
{
//"print" name to user
fPanel.add(new Label(channels.get(i).getName()));
}
RootPanel.get().add(fPanel);
}
//model definition
@SingleJsoImpl(PeopleImpl.class)
public interface People extends HasName
{
String getImage();
void setImage(String Image);
}
但是得到了这个错误:
java.lang.ClassCastException: com.google.gwt.core.client.JavaScriptObject$ cannot be cast to com.pkg.People
奇怪的是,我已经可以看到“通道”的长度是 1,为什么会出现这个转换错误?如何解决这个问题?