Получение в IE длины массива Java, передаваемого из апплета в его оболочку Javascript - PullRequest
0 голосов
/ 08 июня 2009

В моем апплете есть следующий метод:

public File[] getFiles()

Который я вызываю из Javascript следующим образом:

var files = applet.getFiles();

for (var i = 0; i < files.length; i++) {
    // Do something.
}

Это работает в Firefox, но IE дает мне

'length' is null or not an object

Есть идеи у кого-нибудь?

Ответы [ 3 ]

0 голосов
/ 08 июня 2009

Не уверен, насколько широко поддерживается передача массива Java в javascript. Обходной путь - вернуть массив в виде строки с разделителями, как показано в следующем примере

http://www.rgagnon.com/javadetails/java-0183.html

0 голосов
/ 11 июня 2009

Обходной путь найден. Вместо того, чтобы возвращать массив, вместо этого возвращайте список. Затем переберите его, используя методы get и size. Работает как в IE, так и в Firefox.

Итак, метод апплета должен быть:

public List<File> getFiles()

И использовать его на стороне Javascript:

var files = applet.getFiles();
for (var i = 0; i < files.size(); i++) {
    // Do something with files.get(i).
}
0 голосов
/ 08 июня 2009

Вы можете использовать Firebug Lite в IE, чтобы выяснить, что происходит с files

Во-первых, включите Firebug Lite в ваш файл

<script type='text/javascript' 
    src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>

Теперь войдите в консоль с помощью

var files = applet.getFiles();
console.log(files);
for (var i = 0; i < files.length; i++) //...

Теперь вы можете выяснить, какой объект фактически был возвращен getFiles()

Я даю это предложение, потому что IE сказал, что length является нулевым или нет объектом вместо files является нулевым или нет объектом , поэтому, возможно, files другие методы, которые вы можете использовать. Используйте Firebug, чтобы отразить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...