2009-06-08 8 views
0

je la méthode suivante dans mon applet:Obtenir dans IE la longueur d'un tableau Java passé d'une applet à son Javascript wrapper

public File[] getFiles() 

que j'appelle de Javascript comme suit:

var files = applet.getFiles(); 

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

Cela fonctionne dans Firefox, mais IE me donne

'length' is null or not an object 

Toute personne idées?

+0

Ne connaissant rien Java je ne peux demander si vous avez essayé « (i dans les fichiers) {/ * faire des trucs * /} " – annakata

+0

Vous ne voulez pas dire Fichier [] (pas Fichiers [])? Autre que cela, il serait utile si vous alertez (fichiers). Aussi, si vous avez un débogueur javascript (DebugBar, par exemple) qui aiderait le plus. – laginimaineb

+0

@annakata: Oui, je l'ai essayé. Cela ne fonctionne pas dans Firefox ou IE. @laginimaineb: question corrigée. Merci! Aussi, l'alerte (fichiers) n'aide pas beaucoup mais je vais essayer la suggestion de kizzx2 ci-dessous pour jeter un coup d'oeil dans la structure des fichiers. –

Répondre

0

travail autour trouvé. Au lieu de retourner un tableau, renvoyez une liste à la place. Puis parcourez-le en utilisant les méthodes get et size. Fonctionne à la fois dans IE et Firefox.

Ainsi, la méthode de l'applet doit être:

public List<File> getFiles() 

Et pour l'utiliser JavaScript côté:

var files = applet.getFiles(); 
for (var i = 0; i < files.size(); i++) { 
    // Do something with files.get(i). 
} 
+0

Doit avoir vérifié https://developer.mozilla.org/en/LiveConnect d'abord. Clairement indiqué là que les tableaux sont douteux dans une certaine version de LiveConnect. –

0

Vous pouvez utiliser Firebug Lite dans IE pour enquêter sur ce qui se passe avec files

En premier lieu, inclure Firebug Lite dans votre fichier

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

Connectez-vous maintenant dans la console avec

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

Vous pouvez maintenant examiner quel objet a effectivement été renvoyé par getFiles()

Je donne cette suggestion parce que IE a dit length est nul non ou non un objet au lieu de files est nulle ou non un objet, alors peut-être files avoir d'autres méthodes que vous pouvez utiliser. Utilisez Firebug pour les refléter.

0

Vous ne savez pas quel est le degré de prise en charge d'un tableau Java en javascript. Une solution consiste à retourner le tableau comme une chaîne délimitée comme indiqué dans l'exemple suivant

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

+0

Déjà vu ce lien. L'approche n'est pas viable puisque getFiles retourne un tableau d'objets non-string. –

+0

Je me rends compte que, vous construisez la chaîne à partir des attributs de chaîne requis à partir du tableau de fichiers, par exemple. le chemin du fichier. vous pouvez ensuite obtenir les détails requis à partir du fichier en utilisant ce chemin – objects