Я работаю над страницей JSP, и мне нужно всегда показывать выбранное значение раскрывающегося списка на этой странице JSP. Ниже мой пример -
<p style="font-weight: bold">Limit</p>
<select id="limit" name="limit">
<option value="10">10</option>
<option value="20">20</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
В первый раз, когда моя страница загружается, я хотел показать 10 значений, выбранных из выпадающего списка выше. Теперь, если я выберу 20 из выпадающего списка выше и отправлю форму, мне нужно показать 20 в этом выпадающем списке, сохраняя состояние выпадающего списка всегда, поэтому для этого я использовал ниже код -
<%
String limit = request.getParameter("limit");
%>
<script>
document.getElementById("limit").value = '<% out.print(limit); %>';
</script>
Но так или иначе, всякий раз, когда я загружаю свою страницу в первый раз, я всегда вижу пустое поле infront в раскрывающемся списке Limit
а затем, если я выберу 20
из этого раскрывающегося списка и снова отправлю форму, тогда я могу увидеть 20 selected
в этом выпадающем списке и если я выберу 50 и отправлю форму снова, то опять же, я также могу увидеть 50 выбранных в этом выпадающем списке.
Единственная проблема в том, что когда я загружаю страницу, она всегда показывает пустое поле в качестве выбранного значения в раскрывающемся списке, который не является тем, что я хочу, я хочу автоматически выбрать 10 автоматически всякий раз, когда страница загружается в первый раз,
У вас нет "заданного по умолчанию" назначения в вашем коде, поэтому присваивание значения назначает значение limit
, которое, по-видимому, является нулевым при первой загрузке страницы, в раскрывающемся списке. Похоже, это приводит к пустой опции.
У вас есть два варианта. Первое: если одно из существующих значений должно быть по умолчанию, назначьте его для limit
если для него нет значения:
<%
String limit = request.getParameter("limit");
limit = (limit == null) ? DEFAULT_VALUE : limit;
%>
В качестве альтернативы, если одно из существующих значений не подходит по умолчанию, вы должны указать пустую альтернативу в списке опций:
<select id="limit" name="limit">
<option value="">-- SELECT ONE --</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
Надеюсь это поможет.
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: путем интерполяции значения limit
на вашу страницу вы нарушаете основное правило безопасности в Интернете: никогда не эхо вводите пользователя на страницу, не открывая ее. Подумайте, что произойдет, если включить тег script
как значение limit
...
Использование javascript - это круто, но вы можете добиться выбора с помощью HTML-функций, посмотрите описание <option selected...>
на http://www.w3schools.com/tags/tag_option.asp
Поэтому ваш JSP можно переписать:
<select id="limit" name="limit">
<option value="10" selected>10</option>
Вы можете добавить условие вокруг своего <script>
:
<% if (limit != null) { %>
...
<% } %>
Или вы можете использовать jquery (это почти всегда хороший вариант с javascript), его метод выбора <option>
не даст этого эффекта.
На первой загрузке страницы нет набора параметров запроса. Простым решением может быть:
<%
String limit = request.getParameter("limit");
if (limit == null) {
limit = "10";
}
%>