如何做GWT-Wrapper

时间:2012-09-25 13:22:33

标签: javascript html gwt jsni

您好我需要一些指导或如何做一个javascript库包装的指针。

我用一个函数创建一个简单的javascript“myTest.js”:

function myFunction(num)
{
    if(num==1){
        return "Hello World1!";
    }else{
        return "bye World2!";
    }
}

我打电话给我简单的HTML:

<html>
  <head>
    <script type="text/javascript" SRC="myLib.js">  

</script>
    <title>Tutorial: HelloWorld</title>
  </head>
  <body>
    <h1>Example HTML</h1>
    <input type="button" value="button" onclick="alert(myFunction(1))">
  </body>
</html>

显然,这个例子在GWT中很容易做到。

这只是为了让我学习如何使用javascript文件的gwt-wrapper来调用GWT中的函数。

由于


好吧,如果我有一个带有此功能的js文件,我需要一个更强大的示例:

  function MyObject() {
    // properties in config
    this.displayname = 'First Last';
    this.username = '1060';
    this.domain = '12.18.34.234';
    this.authname =  '1060';
    this.password = '1060';
    this.transport = 'w34s';
   }

并且在html中是脚本部分我进行了这个调用

var myObj = new MyObject();

我如何在GWT中做到这一点?

我必须创建MyObject类吗? 用javascript中显示的字段?

4 个答案:

答案 0 :(得分:2)

要在Java和JavaScript类型之间架起桥梁,请使用GWT的overlay types来创建API包装层。

您可以创建一个单独的module来包含已包装的库并将其链接到主模块。

答案 1 :(得分:0)

如果你想在GWT中调用本机javascript,你可以在你的GWT类中定义一个本机方法,如下所示:

private native void test(String argument)/*-{
    myFunction(argument);
}-*/

当你从GWT调用方法测试(“foo”)时,它将调用本机js函数myFunction(“foo”);

答案 2 :(得分:0)

你必须使用JSNI。请参阅GWT 2.4 here的文档。

答案 3 :(得分:0)

现在你应该使用JSNI,但也有js互操作。 js interop使事情变得更容易,并且在2.8即将到来js interop将成为常态并且它将被构建到GWT编译器中。他们说在2.7中的js互操作虽然是实验性的。 here's关于它的文档。