Как я могу вызвать setParameter в объекте запроса? - PullRequest
3 голосов
/ 20 марта 2012

Это, вероятно, из-за моего непонимания и неполной информации о JSP и JSTL.У меня есть веб-страница, где у меня есть элементы ввода, такие как

<input name="elementID" value="${param.elementID}"/>

Когда я пытаюсь сохранить форму, я проверяю, чтобы этот elementID и другие элементы соответствовали определенным ограничениям «числовое, меньше XXX»,Я показываю сообщение об ошибке, если они этого не делают.Все параметры сохранены, и пользователю не нужно вводить его снова после исправления ошибки.

После сохранения, когда я перенаправляю на ту же страницу для редактируемого объекта, я ищу способ установкипараметр как request.setParameter("elementID",..) Есть ли способ сделать это?Однако единственное, что я могу найти, это request.setAttribute.

Ответы [ 3 ]

6 голосов
/ 20 марта 2012

HTTP-ответы не поддерживают передачу параметров.JSP / Servelets позволяет вам использовать request.setAttribute или session.setAttribute для этой цели.Оба метода доступны при обработке страницы, на которую вы перенаправляете, так что, по сути, вы правильно поняли ...

Кроме того, из того, что вы описываете, вы можете проверить проверку на стороне клиента: неотправляйте форму до тех пор, пока вы не подтвердите ее с помощью сценариев на стороне клиента (javascript)

0 голосов
/ 19 марта 2018

Мне пришлось включить <%@ page isELIgnored="false"%> в мой jsp, чтобы код вроде ${elementid} работал

0 голосов
/ 20 марта 2012

После того, как сервлет обработает форму (т.е. сохранит введенные пользователем данные в базе данных), отправьте сервлету (не перенаправьте, потому что это потеряло бы параметры запроса) запрос к тому же jsp, который содержит форму.Поэтому нет необходимости устанавливать параметры, так как сервлет просто передает обратно тот же объект запроса.

JSP, содержащий форму, должен иметь входные данные, подобные этому:

<form>
...
<input type="text" value="${elementid}"/>
...
</form>

Синтаксис $ {varname} - EL.Поэтому, если элемент уже имеет значение, это текстовое поле будет содержать это значение.В качестве альтернативы, если вы не использовали EL и / или JSTL, вы используете скриптлеты (но это крайне нежелательно, EL и / или JSTL должны быть подходящими):

<form>
...
<input type="text" value="<%= request.getParameter("elementid") %>"/>
...
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...