Как передать массив Java массиву JavaScript с помощью jsp?

Это, вероятно, шанс иметь 10 номеров в порядке с 30% до 40%, которые вы упомянули.

Удалите фигурные скобки из функции обратного вызова sort (так после жирной стрелки), чтобы она возвращала что-то.

9
задан Alex K. 11 May 2011 в 14:49
поделиться

3 ответа

Вы получаете код JSP, который выполнен на сервере, путавшем с кодом JavaScript, это выполняется на клиенте. Отрывок <%=columns.get(j++)%> выполняется однажды, на сервере, и цикл JavaScript вокруг этого не важен в этой точке. Когда это прибывает клиент, говорит тело цикла просто colArray[i] = "first entry"; который, конечно, помещает ту же строку в каждый элемент массива.

Что необходимо сделать, вместо этого должен иметь цикл, выполняются на сервере, как это:

<% for (int i=0; i<columns.size(); i++) { %>
colArray[<%= i %>] = "<%= columns.get(i) %>"; 
<% } %>

Мои навыки JSP ржавы, и синтаксис может отличаться, но я надеюсь, что Вы получаете идею.

Править: Как был указан в комментариях, необходимо быть ОЧЕНЬ осторожны относительно выхода из чего-либо в тех Строках, которые могли заставить их интерпретироваться как код JavaScript (наиболее заметно кавычки) - особенно, если они содержат пользовательский контент. Иначе Вы оставляете свое приложение широко открытым для сценариев перекрестного сайта и нападений подделки запроса перекрестного сайта.

14
ответ дан 4 December 2019 в 07:05
поделиться

Попытайтесь использовать JSON (объектная нотация JavaScript), было бы довольно просто закодировать массив и декодировать его на JavaScript

проверьте его здесь

http://www.json.org/java/index.html

6
ответ дан 4 December 2019 в 07:05
поделиться

После того как JavaScript достигает клиента, серверный код прекратил выполняться. Серверный код не выполняется "параллельно" с клиентским кодом.

Необходимо создать всю инициализацию JavaScript в Java и отправить его, завершиться и исполняемый файл, клиенту:

<%
StringBuffer values = new StringBuffer();
for (int i = 0; i < columns.size(); ++i) {
    if (values.length() > 0) {
        values.append(',');
    }
    values.append('"').append(columns.get(i)).append('"');
}
%>
<script type="text/javascript">
var colArray = [ <%= values.toString() %> ];
</script>

Это - всего один способ сделать это, можно также создать вывод "на лету" путем встраивания серверного кода в [ и ]. Я использовал этот пример, чтобы попытаться продемонстрировать разделение между созданием строки, которая включает клиентский JavaScript и вывод это к браузеру.

5
ответ дан 4 December 2019 в 07:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: