GWT,将ArrayList传递给JSNI

时间:2012-09-23 23:49:10

标签: gwt jsni

在我的GWT应用程序中,我有一个javascript函数,需要一个数组数组作为参数。我使用RPC获取数据,因此我获得了List<列表>从我的数据库。我需要这个,因为我必须填写一种树视图。例如,我从我的RPC调用中得到这个:{“A”,“A1”,“A2”},{“B”,“B1”},我必须将它传递给我的javascript函数:[[“A “,”A1“,”A2“],[”B“,”B1“]]。在我的界面中,我想展示:

A+
  A1
  A2
B+
  B1

如何使用JSNI将其传递给我的javascript函数?

1 个答案:

答案 0 :(得分:3)

如果您可以不使用DevMode(因为您使用的是SuperDevMode),则Java阵列与生产模式中的JsArray*相同,因此String[][]JsArray<JsArrayString>相同。<登记/> 在DevMode中,有JsArrayUtils可以提供帮助(在DevMode中复制,在生产模式下按原样返回,没有开销),但不适用于嵌套数组(实际上甚至不用于字符串数组),所以不是在你的情况下。

如果您需要/想要列表而不是数组或DevMode支持,那么您必须将数据复制到JsArray<JsArrayString>

如果您可以使用数组但需要DevMode支持,则可以使用GWT.isScript()来创建特定的代码分支:在DevMode中复制到JsArray<JsArrayString>,在prod模式下按原样传递数组(这也意味着2个JSNI方法,适用于JsArray<JsArrayString>String[][]