JavaScript int[] von Java Applet an JS übergeben?

meiniwtz

Cadet 4th Year
Registriert
Juli 2009
Beiträge
71
Hallo,

mein Java Applet hat eine Methode GetArray(), die ein volles int-Array returnt:
Code:
public int[] GetArray(){
       int[] a = new int[100];
       ....
       return a;
}

im JavaScript steht:
Code:
var jsa = new Array(100);
jsa = document.myapp.GetArray();
for(var i=0; i<100; i++){
		document.write("Array=" + jsa[i]);
}

Leider gibt es mir nur Array=undefinedArray=undefined.... aus, also hat das Kopieren nicht funktioniert. Ich habe schon gelesen, dass man Arrays in Strings mit Trennzeichen umwandeln kann und diese nach dem Übergeben wieder zurück, aber das muss doch irgendwie einfacher gehen, es sind ja nur primitive Int-Arrays (da sollte ja keine Referenz sondern die Werte kopiert werden). :freak:

Hat da jemand Erfahrung?
Danke!
 
Im Endeffekt können nur Zeichenketten (aka. Strings) zwischen dem Applet und JS übergeben werden. JS kann nicht auf den Speicher des Applets zugreifen, hat also keinen direkten Zugriff auf auf das Array.
Java gibt Arrays nur als Referenz weiter, mit der JS hier also nichts anfangen kann. Zudem hat JS keine Kenntnis darüber, welcher Datentyp überhaupt zurückgegeben wird, weshalb alles erstmal als String behandelt wird, was bei einer dynamisch typisierten Sprache wie JS nicht weiter weltbewegend ist.
Statt der Referenz zum Array muss also ein einziger String zurückgegeben werden. Dafür würden mir im einfachsten Fall auch nur die Zahlen per Trennzeichen getrennt, also z.B. "1;2;3;4" oder eine Serialisierung zu JSON einfallen, was die universelle Standardlösung wäre. Ich würde der Einfachkeit halber die Trennzeichen-Variante wählen. Dazu findest du per Google sicher mehr als genug Tutorials, falls du dabei Hilfe benötigen solltest.

Das Array=undefined erhältst du, weil du hier eine Variable als Array verwendest, jedoch wie oben beschrieben kein Array vorliegt.

Ich muss jedoch dazu noch erwähnen, dass ich mich nicht mit Java-Applets und den Zugriff auf diese per JS auskenne. Ich bin jedoch sowohl in Java als auch JavaScript erfahren.
IMO haben Java-Applets schon seit vielen Jahren nichts mehr im Web verloren. Dazu gibt es mit HTML5 (canvas) + JS und notfalls Flash zeitgemäßere Lösungen. Die Zahl der Benutzer mit verfügbarem Java-Plugin im Browser sinkt stetig. Aber das ist nur meine persönliche Meinung ;)
 
Zuletzt bearbeitet:
Zurück
Oben