2010-01-18 4 views
5

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

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

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

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

Спасибо.

Update

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

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

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

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

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

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

Любое предложение, почему не работает ?

Update 2

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

ответ

3

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

E.g. 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". С помощью этой кодировки параметры запроса больше не отображаются в карте параметров, а вместо этого в тело запроса из-за смешанного с двоичными данными (загрузка файлов).Это будет долгая история, чтобы объяснить все это, но в основном вам нужно разобрать запрос самостоятельно. Если вы используете Servlet 2.5 или старше, то здесь очень полезно использовать Apache Commons FileUpload. Внимательно прочитайте «Руководство пользователя» и «Часто задаваемые вопросы», чтобы увидеть примеры кода и научиться правильно использовать его (также в MSIE!). Вы даже можете абстрагировать FileUpload, так что вы можете использовать HttpServletRequest#getParameter() и ${param} обычным способом, см. Также this article.

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

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

+0

Все еще не работает, элемент ввода уже имел имя «id1». Все мои входы имеют имя, но не могут получить какой-либо из них значением $ {param.XXX} связано ли это с тем, что форма «enctype =« multipart/form-data »? – framara

+0

Я не полностью понял Update3, вы означает, что нет никакого способа узнать из того же самого .jsp значение входного элемента, если форма является enctype = "multipart/form-data"? – framara

+1

Не используйте JSP для бизнес-логики. Это только квитирование для проблем. принадлежит к реальным Java-классам. – BalusC

Смежные вопросы