Как назначить переменные JavaScript для JSP или JSTL - PullRequest
0 голосов
/ 15 июня 2011

Может кто-нибудь сказать мне, как назначить переменные JavaScript для JSP-запроса или JSP-сессии.

Я делаю что-то вроде этого

Здесь deletedRows - скрытое поле.

var del=45;
document.getElementById("deletedRows").value=del
alert(document.getElementById("deletedRows").value);
<%String del_values = request.getParameter("deletedRows");%>
<%request.getSession().setAttribute("del_rows", del_values);%>

Я не получаю значение del в моем сервлете.

Ответы [ 2 ]

1 голос
/ 15 июня 2011

JSP компилируется на сервере.Все, что получает клиент, это «вывод» JSP: HTML, CSS и Javascript.

Javascript выполняется после this.Это означает, что все в JSP становятся HTML и т. Д. При выполнении JavaScript.Вы хотите думать об этом, поскольку часть Java / JSP «завершилась», и теперь часть HTML / Javascript вступает во владение.

Теперь вы хотите передать некоторое значение, вычисленное / обработанное с помощью Javascript, обратно на сервер.(Я думаю, это то, что вы имеете в виду, когда говорите «переменные javascript в jsp-запросе или jsp-сеансе»

Для этого вы должны отправить страницу на сервер, и эти значения должны быть частью формыотправляется.

Возможно, у вас уже есть эти значения в некоторых элементах HTML (например, <input> или <select>), если нет, вы можете создать скрытые элементы и заполнить их значениями перед отправкой <form>.

В предоставленном вами коде вы правильно заполняете скрытое поле, но вам нужно получить значение в сервлете, а не в самой JSP. Также убедитесь, что скрытое поле вв <form> и эта форма отправляется.

Как только форма отправлена ​​(сервлету), значения можно получить в сервлете через request.getParameter.

Существует несколько другихмеханизмы для отправки значения на сервер, используя параметр URL или асинхронные (AJAX) запросы, но я не уверен, что вы тоже на это смотрите.

1 голос
/ 15 июня 2011

Любые поля формы, включая скрытые поля, отправленные из браузера , будут доступны в вашем JSP с помощью request.getParameter("fieldname");.Доступ к параметрам строки запроса можно получить таким же образом.

Убедитесь, что в полях формы указан атрибут name, поскольку именно это имя (а не атрибут id) становится именем параметра в вашемсерверный код.

То, что вы уже сделали в небольшом фрагменте кода, показанном в вашем вопросе, т. е. установите в скрытом поле формы значение переменной JavaScript, должно позволить этому значению бытьпредставлен и затем доступен в коде на стороне сервера.Но трудно понять, почему он не работает, не видя хотя бы части вашей HTML-формы, в частности определения скрытого поля.Это также поможет увидеть, как это представляется.(Я предполагаю, что отправляется : если вы пытаетесь заставить весь этот код работать только на сервере, он не будет работать, потому что сервер обрабатывает JavaScript как контент документа, онне выполняется. Опять же, я не могу точно сказать, как вы используете этот код, не видя больше окружающего JSP.)

ОБНОВЛЕНИЕ: я вижу, что ваш код был отформатирован, так как я начал печатать свойответ.Вы не ожидаете, что все пять строк будут запущены на сервере?Код JavaScript запускается только в браузере клиента после отображения страницы.Код Java между <% %> выполняется на сервере до того, как страница попадает в браузер, и поэтому вообще не может получить доступ к JavaScript.Все, что не входит в теги <% %>, просто отправляется в браузер как есть - сервлет не взаимодействует с ним как таковым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...