как отправить форму без потери значений, уже выбранных в той же форме - PullRequest
0 голосов
/ 26 апреля 2010

Я использую jstl с выпадающими списками.

Когда я нажимаю кнопку подтверждения, я успешно завершаю спецификацию, но значения в выпадающих списках переинициализируются.

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

Я пытался так поступить ...

<form action="myjsp.jsp" method="post">
<input type="Submit" value="Edit">

... но это не работает.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 26 апреля 2010

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

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

Обратите внимание, что это XSS чувствительно. Вы всегда должны дезинфицировать пользовательский ввод. Для этого вы можете использовать JSTL-функции taglib.

<input type="text" name="foo" value="${fn:escapeXml(param.foo)}">

В случае выпадающих списков, представленных элементом HTML <select>, это немного сложнее. Вам необходимо установить атрибут selected для рассматриваемого элемента HTML <option>. Вы можете использовать троичный оператор в EL для печати атрибута selected всякий раз, когда значение параметра соответствует значению параметра запроса.

Базовый пример:

<select name="foo">
   <c:forEach items="${options}" var="option">
       <option ${param.foo == option ? 'selected' : ''}>${option}</option>
   </c:forEach>
</select>
...