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