2014-12-01 3 views
-1

У меня есть метод, который возвращает 2d-массив в Java: public Object[][] getArray1() {}Почитаю массив Java в JavaScript,

я использовал println() напечатать его содержание, и я вижу, что его хорошо создан.

На Javascript я присвоить этот массив в var:

var content ="#{BDEStats.getArray1()}"; 

Но я не кажется, способны Асесс это данные. он всегда возвращает java.Lang.object; @... Как я могу сделать, чтобы отобразить содержимое этого массива?

Я попытался выполнить цикл массива, но я не знаю, как обращаться к объектам, которые он держит. если я использую content[1], чтобы вернуть символ в этом índex ..! Любопытное потерял здесь

+0

Вы не можете сделать это таким образом. Я вижу, вы используете JSF, что вы пытаетесь сделать? – Stefan

+0

У меня есть графический объект, который получает 2d-массив https://developers.google.com/chart/interactive/docs/reference#google.visualization.arraytodatatable. Я построил массив, содержащий значения, которые я хочу передать графике .. Я распечатываю все значения в java, но когда я передаю объект через JSF, я не могу это решить. –

+0

Взгляните на ответ здесь: http://stackoverflow.com/questions/14217263/rendering-2d-array -without-hdatatable – GavinBrelstaff

ответ

0

Это нормальное arrayString представление в Java, состоящий в:

  • Ряд [ основан на измерении
  • Либо письмо для примитивного типа (т.е. I для int) или L[fully qualified class name] для Object сек
  • @
  • хэша array «s код

Для одномерных array s используйте java.util.Arrays.toString(myArray).

Для многомерных array s, используйте java.util.Arrays.deepToString(myArray).

Редактировать (добавление предыдущий комментарий, чтобы ответить)

Вы, вероятно, хотите, чтобы исследовать JSON.parse разобрать ваш массив Java из JavaScript.

+0

В Javascript есть что-то эквивалентное для доступа к массиву? –

+0

@ SalvadorMacedo Вы, вероятно, хотите исследовать 'JSON.parse'. – Mena

0

Я думаю, вы можете преобразовать массив в формат JSON, прежде чем назначать его javascript.

Вы можете использовать некоторые рамки JSON, чтобы сделать это новообращенного как:

Вот маленький Джексон демо:

import com.fasterxml.jackson.core.JsonProcessingException; 
import com.fasterxml.jackson.databind.ObjectMapper; 

... 

public static void main(String[] args) throws JsonProcessingException { 
    String[][] data = new String[1][2]; 
    data[0][0] = "abc"; 
    data[0][1] = "def"; 
    System.out.println(new ObjectMapper().writeValueAsString(data)); 
} 
+0

Благодарим вас за ответ. Я исследую Джсона. Поэтому мне не нужно передавать массив из JAVA напрямую, чтобы прочитать его через JSF, если я правильно понял. Мой 2-й массив должен был вводить графику. этот объект im, возвращающийся в Javascript, бесполезен, и я не могу его разобрать прямо в JS, правильно? –

+0

Вы правы, @SalvadorMacedo. – Dante

0

Чтобы превратить Java массив в строковое представление в синтаксисе, который может быть интерпретирован d с помощью механизма JavaScript, вам нужно включить его в Обозначение объекта JavaScript, или короткое слово JSON.

Для Java существует множество библиотек, доступных для Java. Рекомендации по программному обеспечению не относятся к теме в Stackoverflow, но this article which compares 5 different libraries помог мне выбрать один для моего проекта.

На стороне JavaScript вам просто нужно использовать var content = JSON.parse(stringFromJava).

Если вы создаете код JS процедурно на стороне Java, вы можете просто вставить строку JSON прямо в исходный код. Это работает, потому что JSON является действительным кодом Javascript для объектного литерала. В Java это выглядело бы примерно так:

scriptCode.append("var content = " + arrayAsJsonString + ";\n"); 
0

Ok проблема решена. Так я и сделал это:

Вместо того, чтобы возвращать Java-массив, я вернул объект JSON в свой метод.

Это JSON объект имеет имя и несколько других полей в ех: (я получаю мои данные из списка Java, так что я итерация списка, чтобы заполнить объект JSON)

SONObject jsonObj = new JSONObject(); 
jsonObj.clear(); 
for (int tt=0; tamanho>tt ; tt++) { 
      try {     
jsonObj.put("aa"+tt, ListaJobStats.get(tt).getName()); 
jsonObj.put("bb"+tt , new BigDecimal(ListaJobStats.get(tt).getAge() .... 

После этого если я напечатаюОбъект JSON в java, я получаю строку:

aa0: '1st name'; aa1: «Второе имя»; bb0: «возраст»; BB1: 'второй возраст' ... и т.д. и т.п.

После этого в JavaScript, я получаю мой JSON объект Копание JSF, как это:

var content=#{JAVACLASS.METHODTHATRETURNSJSON}; 

Я stringify этот объект в JS:

var pars= JSON.stringify(content); 

и я создать объект JSON

var json = JSON.parse(pars) 

Теперь я Итерация этот объект JSON в JS, как это:

for (var tt=0; tamanho>tt ; tt++) { 

     [now im specifically adding the values to create a graphic but its just na exemple how u can acess te object] 




    data.setValue(tt, 0, json["aa"+tt]); 


data.setValue(tt, 1, json["bb"+tt]); 

...

Надеется, что это будет полезно. Будьте осторожны

+0

Строки + синтаксические шаги совершенно не нужны. Вы в основном массируете его от JSON до String, а затем снова в JSON. Просто выполните 'var json = # {JAVACLASS.METHODTHATRETURNSJSON};'. – BalusC

Смежные вопросы