Для начинающих веб-разработчиков важно понимать, что языки на стороне сервера, такие как JSP, работают на веб-сервере, а языки на стороне клиента, такие как JS, работают на веб-браузере.JS не работает синхронно с JSP.JSP производит только HTML / CSS / JS код.Веб-сервер отправляет его веб-браузеру.JS видит / понимает только HTML.
Всякий раз, когда вы хотите назначить переменные JSP для JS, вам нужно разрешить JSP напечатать его , как если бы это код JS.Вот пример с тегом JSTL <c:forEach>
для итерации по Object[][]
(я считаю, что в Struts также есть свой собственный тег итератора, <s:iterator>
, но, поскольку я не использую Struts, я не уверен, как его использовать, и еслиэто применимо; JSTL должен работать так же хорошо).
<script>
var objects = [];
<c:forEach items="${objects}" var="row" varStatus="x">
objects[${x.index}] = [];
<c:forEach items="${row}" var="column" varStatus="y">
objects[${x.index}][${y.index}] = '${column}';
</c:forEach>
</c:forEach>
</script>
Таким образом, все закончится следующим образом, когда JSP выполнит свою задачу по созданию кода HTML / JS, предполагая, что у вас есть Object[][]
с 2 строками и 2 столбцами (вы можете проверить это самостоятельно, открыв страницу в веб-браузере, щелкнув ее правой кнопкой мыши и выбрав Просмотреть исходный код ):
<script>
var objects = [];
objects[0] = [];
objects[0][0] = 'row1col1';
objects[0][1] = 'row1col2';
objects[1] = [];
objects[1][0] = 'row2col1';
objects[1][1] = 'row2col2';
</script>
Таким образом, код JS может получить к нему доступ с помощью objects
.