我在将一些数据从JavaScript传递到applet时遇到了问题。我认为数据的大小太大(字符串中的18M字符)以通过LiveConnect传递它。
我把代码示例放在下面:
JavaScript的:
var bigData = generateSomeBigData(18000000); // string contaning 18 000 000 characters
applet.Execute(bigData); // no error
小程序:
public void Execute(String data) {
this.doSomethingWithData(data); // data is null
}
我在java控制台或javascript代码中没有收到任何错误或异常。 我已经尝试使用更大的堆运行applet,但它没有帮助。
... <param name="java_arguments" value="-Xmx128m" /> ...
唯一的问题是我得到null
而不是字符串包含数据,它不依赖于浏览器(FF,Chrome)。
答案 0 :(得分:0)
我解决了这个问题。我将数据生成移动到服务器站点,并且使用one time self destructing link
将数据传递到applet。 Applet可以下载不再可用的信息,并返回结果。
这里有一个例子:
服务器:
String bigData = this.generateBigData(18000000);
String linkToData = this.getOneTimeLink(bigData);
JavaScript的:
applet.Execute(linkToBigData);
小程序:
public void Execute(String link) {
String data = this.downloadData(link);
this.doSomethingWithData(data); // data is not null ;)
}
编辑2015年5月11日:
也许你需要一个小的解释来一次破坏链接。我使用它是因为这是我项目的另一个要求,但没有必要实现解决方案。