java - 如何将匿名 JavaScript 对象从 Java 传递到 GWT 中的 JavaScript?

标签 java javascript gwt jsni

我正在围绕 JavaScript 库创建一个 GWT 包装器。 JavaScript 函数之一采用匿名对象作为其参数,例如:

obj.buildTabs({ hide: true, placeholder: 'placeholder' });

在 Java 方面,如何创建这种类型的 JavaScript 对象并将其传递给我的 native 实现?

目前,在 Java 方面我有:

public void buildTabs(TabConfiguration config) {
   // ?
}

private native void buildTabs(?) /*-{
        $wnd.NAMESPACE.lib.buildTabs(?);
}-*/;

感谢任何指点,谢谢。

最佳答案

如果您确切知道应该使用哪些参数,您可以执行以下操作(删除::之后的其他新行)

private native void buildTabs(TabConfiguration config) /*-{
        $wnd.NAMESPACE.lib.buildTabs({hide: 
                config.@com.yournamehere.TabConfiguration::
                getHide()(), 
                placeholder: 
                config.@com.yournamehere.TabConfiguration::
                getPlaceholder()()});
}-*/;

来自GWT documentation的小剪辑:

public native void bar(JSNIExample x, String s) /*-{
    // Call instance method instanceFoo() on this
    this.@com.google.gwt.examples.JSNIExample::instanceFoo(Ljava/lang/String;)(s);

    // Call instance method instanceFoo() on x
    x.@com.google.gwt.examples.JSNIExample::instanceFoo(Ljava/lang/String;)(s);

    // Call static method staticFoo()
    @com.google.gwt.examples.JSNIExample::staticFoo(Ljava/lang/String;)(s);

    // Read instance field on this
    var val = this.@com.google.gwt.examples.JSNIExample::myInstanceField;

    // Write instance field on x
    x.@com.google.gwt.examples.JSNIExample::myInstanceField = val + " and stuff";

    // Read static field (no qualifier)
    @com.google.gwt.examples.JSNIExample::myStaticField = val + " and stuff";
  }-*/;

关于java - 如何将匿名 JavaScript 对象从 Java 传递到 GWT 中的 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1457417/

相关文章:

javascript - Sequelize JS Node 使用先前 Promise 中的新数据更新多个实体

GWT Servlet 错误 com.google.gwt.user.client.rpc .StatusCodeException : 404 on Tomcat server

java - 机器人类,mouseMove无限循环

java - Java EE 到底是什么?

java - 从 firebase android 查询项目后,我无法将项目添加到 HashMap

javascript - String.prototype 导致循环提前退出

java - 如何访问 Java 键绑定(bind)中定义的操作名称?

javascript - 调用特定的函数数组

linux - gwt-maven-plugin 在获取 gwt-dev 工件时附加 "-linux"

GWT SuperDevMode 抛出这个 : Multiple fragment 0 sourcemaps found. Too many permutations