如何从GWT JSNI创建新的Javascript对象?

时间:2013-10-04 22:32:16

标签: java javascript gwt jsni

如何使用JSNI从GWT创建新的Javascript对象?它没有在文档中列出。当我将所有JS移动到.html文件时(但会导致另一个不相关的问题),它会起作用。

Java代码:

private static native void createPicker() /*-{
    var picker = new $wnd.google.picker.PickerBuilder()
        .enableFeature(google.picker.Feature.NAV_HIDDEN)
        ....

错误:

  

com.google.gwt.event.shared.UmbrellaException:捕获异常:(ReferenceError)@ com.onix.sdm.client.SDM_Mailer :: createPicker()([]):google未定义

从浏览器控制台:

> google
  >Object {picker: Object}

参考:

http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html

HTML:

<script type="text/javascript">
    function loadPicker() {
      gapi.load('picker');
    }
</script>
<script type="text/javascript" src="https://apis.google.com/js/api.js?onload=loadPicker"></script>

1 个答案:

答案 0 :(得分:2)

有许多变量以包名称为前缀。这不仅仅是新对象必须加上前缀,而是所有变量,例如

  

var view = new $ wnd.google.picker.DocsView($ wnd.google.picker.ViewId.FOLDERS);

     

.enableFeature($ wnd.google.picker.Feature.NAV_HIDDEN)

总的来说,这是一个巨大的痛苦,没有行#等等,但这就是他们付钱给我的钱。