установить значение переменной из значения поля ввода - PullRequest
5 голосов
/ 18 января 2010

Я начал совсем недавно с JSP, JSTL, HTML и JavaScript, так что вот моя проблема:

Мне нужно установить значение переменной var значение скрытого ввода. Другой вариант, если это возможно сравнить с помощью

<c:if test="....">

значение переменной, которую я отправил с запросом со значением скрытого ввода.

Спасибо.

Обновление

Я пытался, но не могу заставить его работать.

У меня есть это поле, содержащее идентификатор и объект. У меня также есть список объектов, поэтому мне нужно найти объект, связанный с этим идентификатором.

<input type="text" name="id1" />

но если я сделаю это:

<c:set var="dd" value="${param.id1}" />
<input type="text" value="${dd}" />

Введенный текст пуст, но текст, относящийся к id1, отображает 850 (т.е. значение является динамическим)

Есть предложения, почему не работает?

Обновление 2

Мне нужны «multipart / form-data», потому что в форме мне нужно загрузить картинку. Я понимаю, как получить параметры из Java, но так как я использую не сервер, а страницы JSP, есть ли способ сделать это? Просто нужно прочитать этот элемент ввода и сохранить его в переменной.

1 Ответ

3 голосов
/ 18 января 2010

Вы можете получить доступ к параметрам запроса по неявной переменной ${param}.

Например, http://example.com/context/page.jsp?foo=bar в сочетании с

<c:if test="${param.foo == 'bar'}">
   The foo's param value is bar!
</c:if>
<c:if test="${param.foo != 'bar'}">
   The foo's param value is not bar, it is: ${param.foo}
</c:if>

покажет первое условие.

Есливы на самом деле хотите сохранить какой-то скрытый элемент ввода в последующих запросах (что на самом деле не было ясно в вашем вопросе), тогда все, что вам в основном нужно сделать, это:

<input type="hidden" name="foo" value="${param.foo}">

Обновить : согласно вашему обновлению: вам также нужно дать элементу ввода имя .Таким образом, например,

<input type="text" name="id1" value="${param.id1}" />

Таким образом, он доступен по request.getParameter("id1") и по своей сути также ${param.id1}.Вы видите это сейчас?

Обновление 2 : согласно вашему комментарию здесь: конечно, это связано с enctype="multipart/form-data".С этой кодировкой параметры запроса больше не находятся в карте параметров, а вместо этого в теле запроса, из-за смешения с двоичными данными (загрузка файлов).Это будет длинная история, чтобы объяснить все это, но в основном вам нужно разобрать запрос самостоятельно.Если вы используете Servlet 2.5 или старше, тогда Apache Commons FileUpload очень полезен здесь.Прочитайте, в частности, «Руководство пользователя» и «Часто задаваемые вопросы», чтобы увидеть примеры кода и узнать, как правильно его использовать (также в MSIE!).Вы даже можете решить абстрагироваться от FileUpload так, чтобы вы могли придерживаться HttpServletRequest#getParameter() и ${param} обычным способом, также см. эту статью .

Если вы уже используете Servlet3.0, тогда вы можете просто использовать HttpServletRequest#getParts().Вы можете даже абстрагироваться от него, чтобы вы могли придерживаться HttpServletRequest#getParameter() и ${param} обычным способом, также см. эту статью .

Обновление 3: ОВы действительно не хотите использовать JSP для выполнения всей обработки.Там это не для.Самое время выучить Servlet.Кроме того, при использовании Filter, который помещает все параметры из тела запроса обратно в карту параметров запроса (как описано в обеих статьях), вам также не обязательно нужен Servlet в конце концов.

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