GWT jsinterop java的出口不工作

问题描述 投票:1回答:2

我与GWT的工作,我试图导出一个java类在JavaScript中使用在我的HTML。这是Java类我想用jsinterop导出为JavaScript。

package com.example.client;

import jsinterop.annotations.*;

@JsType(isNative = false, namespace = JsPackage.GLOBAL)
public class Foo {

  public int x;
  public int y;

  public int sum() {
    return x + y;
  }
}

这是我在我的HTML的javascript

<script>
    var foo = new Foo();
    foo.x = 40;
    foo.y = 2;
    foo.sum(); 
</script>

我已经使用的编译参数和运行配置的-generateJsInteropExports标志。不过,我仍然得到这个错误:

未捕获的ReferenceError:foo是不MyProgramName.html定义:59(其中,i尝试初始化它线)

此外,使用默认的命名空间也不起作用。当我使用:

var foo = new com.example.client.Foo();

我犯了同样的错误。有什么建议么?

javascript java gwt
2个回答
0
投票

你记得给-generateJsInteropExports标志传递到编译器(和中超开发模式)?没有它,GWT,不出口类型的,因为这会增加输出尺寸。

(这个问题貌似How to access GWT's JsInterop exported types from browser console?的简化版本)


0
投票

请记住,GWT代码异步启动(除非你使用自定义链接),所以它可能只是你要使用它的定义之前的对象。

作为测试,尝试把你的JS代码里面ansetTimeout

真正的解决将是要么使用自定义链接,或设置,你会从GWT的onModuleLoad调用回调。

© www.soinside.com 2019 - 2024. All rights reserved.