Как передать массив из java в javascript?

Javascript может читать java массивы напрямую, но не наоборот. Однако, чтение java массива из яваскрипта
может привести к закрытию вашего браузера по неизвестной причине. Поэтому, лучше использовать следующую технику!

Безопасный и простой способ — преобразовать массив в большую строку с известным символом-разделителем.

В следующем примере, первая кнопка используется для чтения java массива напрямую. Вторая кнопка вызывает
Java метод, который преобразует массив в строку, а затем javascript функция split() используется для восстановления массива.
Треться кнопка модифицирует Java массив. Javascript массив преобразуется с помощью функции join(), а на java-стороне,
StringTokenizer делает все остальное.



[Java applet]

import java.awt.*;

import java.applet.*;

import java.util.*;



public class TestJavaArray extends Applet{

 public String  javaArray [] =

   "array 1""array 2" "array 3" };



 public String [] getJavaArray() {

   return javaArray;

   }



public String getJavaArrayAsAString() {

   // you need more error checking here, of course...

   int k;

   String s = "";



   k = javaArray.length;

   s = javaArray[0];

   for (int i= ; i < k; i++) {

      s += "|" + javaArray[i;

      }

   return s;

   }



 public void putJavaArray(String arrayAsAString) {

   int i = 0;

   String s;

   StringTokenizer st =

      new StringTokenizer(arrayAsAString, "|");



   while(st.hasMoreTokens()){

     javaArray[i++= st.nextToken();

     }

   }

 }



[HTML and Javascript]

<HTML><HEAD></HEAD><BODY>

<SCRIPT>

 function getJavaArray() {

    arrayFromJava = document.myApplet.getJavaArray();



    alert("Java Array length = " + arrayFromJava.length + "\r\n" +

          "element 2 is " + arrayFromJava[1]);

    }



function getJavaArrayAsAString() {

    var arrayAsAString =

       document.myApplet.getJavaArrayAsAString();

    realJsString = arrayAsAString + "";

    arrayFromJava = realJsString.split("|");

    alert("Java Array length = " + arrayFromJava.length + "\r\n" +

          "element 2 is " + arrayFromJava[1]);

    }



 function putJavaArray() {

    arrayFromJs = new Array("ARRAY 1""ARRAY 2""ARRAY 3");

    arrayAsAString = arrayFromJs.join("|");

    document.myApplet.putJavaArray(arrayAsAString);

    }



 </SCRIPT>

 <FORM>

 <INPUT type="button" value="get JAVA array"

    onClick = "getJavaArray();">

 <INPUT type="button" value="get JAVA array (as a string)"

     onClick = "getJavaArrayAsAString();">

 <INPUT type="button" value="put JAVA array"

    onClick = "putJavaArray();">

 </FORM>

 <APPLET CODE="TestJavaArray.class"

         NAME="myApplet"

         HEIGHT=WIDTH=0>

 </APPLET></BODY></HTML>

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>