2012-07-02 2 views
2

У меня есть жестко закодированные данные в файл .jsp. Я хочу, чтобы заполнить массив JavaScript с данными, отправленными с сервера.Передача данных в .jsp Javascript array

Я попытался отправить данные с другой страницы .jsp, но я не могу понять, как преобразовать его в JavaScript var для меня, чтобы иметь возможность использовать его на моей странице, я также начал использовать объекты JSON, но прежде чем продолжить, мне просто нужно руководствоваться тем, как лучше всего это сделать.

То есть: заполнение массива JavaScipt в файле .html или .jsp с сервера. Затем массив будет использоваться для API Карт Google.

Позвольте мне знать, если у вас есть какие-либо вопросы:

благодаря

ответ

3

Если это жёстко, почему не делает его переменной JS напрямую?

var foo = [{ 
    "name1": "value1a", 
    "name2": "value2a" 
},{ 
    "name1": "value1b", 
    "name2": "value2b" 
}]; 

Или, если это жёстко в Java стороне, и вы собираетесь использовать его в JS стороне, а, затем преобразовать объект Java в формате JSON, используя один из многих JSON сериализаторов/парсеров доступны. В нижней части json.org вы можете найти обзор всех доступных JSON API в Java. Один из них - Google Gson. Он способен преобразовать, например, List<SomeBean> в строку JSON следующим

String jsonString = new Gson().toJson(someBeans); 

Вы можете просто позволить JSP напечатать его, как будто это переменная JS, при условии, что он хранится в качестве атрибута запроса:

var foo = ${jsonString}; 
+0

+1, более чистый ответ. Lazy для поиска, но это приведет к отображению объектов, чья строчная версия содержит ''? – SuperSaiyan

+0

@Thrustmaster: Да, Gson по умолчанию JS-escape свойства bean. Это также можно настроить. – BalusC

1

Это довольно просто:

  1. Вы должны убедиться, что ваш JSP производит правильный JavaScript в качестве вывода.
  2. Включите JSP с тегом <script> (т. Е. JSP должен быть доступен с URL-адресом, поместите этот URL-адрес в атрибут src).

Пример кода JSP:

var data = [<% ...generate array elements here... %>]; 

Это позволит вам получить доступ к переменной data во всем JavaScript, который выполняется после этого. В вашем случае вы включите скрипт в первую очередь на странице, чтобы каждый другой скрипт мог его использовать.

ловкий трюк: Добавить параметр запроса, чтобы указать имя переменной:

var <%=request.getParameter("name") %> = [<% ...generate array elements here... %>]; 

и включить его с

<script src="...url...?name=data" type="text/javascript">