установить значение переменной из поля ввода значение


Я начал недавно с 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 5

1 ответ:

Вы можете получить доступ к параметрам запроса с помощью неявной переменной ${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}">

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

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

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

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

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

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