【问题标题】:Send Java object from JavaScript to Applet将 Java 对象从 JavaScript 发送到 Applet
【发布时间】:2012-11-30 11:16:59
【问题描述】:

如何将 Java 对象从 JavaScript 发送到 Java? LiveConnect 允许我们通过调用 applet 方法来获取 Java 对象。即我们可以在小程序中使用以下方法:

public MyClass getMyClass() { return new MyClass(); }`

MyClass 在哪里:

public class MyClass implements Serializable {
   private String a;
   private String b; //getters, setters
}

在 JS 中使用:

applet.getMyClass().someMethod();

但是我如何将对象从 JavaScript(我认为是 json 对象)传递给 java 方法(而不是作为 json 字符串)?即我想有这样的小程序方法:

public void myMethod(MyClass var)

并从 JavaScript 调用此方法传递 MyClass 类型的参数。如何在 JS 中构建MyClass 对象?我希望 LiveConnect 自动将 JSON 转换为 Java 对象。

【问题讨论】:

  • 你尝试过传递 json 对象吗?
  • 嗨。就是想。任何答案有帮助吗?你有进步吗?哦,祝你的项目好运 :-) 我喜欢语言相互交流!
  • @MiltiadisKokkonidis 我决定采用另一种方式,所以我没有测试您的解决方案。但似乎您的解决方案是可行的,所以我将您的答案标记为已接受。谢谢。

标签: java javascript applet liveconnect


【解决方案1】:

我相信这应该让您对如何进行此操作有一个很好的了解。

import netscape.javascript.*;

public class MyClass implements Serializable {
public String a;
public String b;

    public JavaDog(JSObject o) {
        this.a= (String)o.getMember("a");
        this.b = (String)o.getMember("b");
    }
}

然后您使用new Packages.MyClass(yourJavaScriptObject) 创建您要传递给Java 的对象。

更多信息在这里:

https://developer.mozilla.org/en-US/docs/JavaScript/Guide/LiveConnect_Overview

【讨论】:

    【解决方案2】:

    Java LiveConnect 文档说:

    当一个 Java 对象之前返回给 JavaScript 引擎被传回Java,对象被简单地检查 分配与目标类型的兼容性。唯一的例外 此规则自动转换为java.lang.String

    【讨论】:

    • 注意:which was previously returned to the JavaScript engine is passed back to Java 我没有从方法返回任何值。我想将参数传递给MyClass 类型的小程序方法。
    • 我的问题是如何在 java 脚本中为 MyClass 创建实例对象,例如 MyClass myClass = new MyClass()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多