html/js: Обновите опции 'Select'

Существует класс 'Автомобиль' с брендом и моделью как свойства. У меня есть список объектов этого класса List<Car> myCars. Я должен представить 2, выпадает на странице JSP, один для бренда и другого для модели, которые, когда Вы выбираете бренд в образцовом списке только, появляются те от того бренда. Я не знаю, как сделать это динамическим способом.

Какое-либо предложение, где запустить?Спасибо

Обновление

Хорошо, то, что я делаю теперь, отправляют в запросе список со всеми торговыми марками и список объектов. Код JSP похож:

<select name="manufacturer" id="id_manufacturer" onchange="return getManufacturer();">
  <option value=""></option>
    <c:forEach items="${manufacturers}" var="man">
       <option value="${man}" >${man}</option>
    </c:forEach>    
</select>

<select name="model" id="id_model">
   <c:forEach items="${mycars}" var="car">
      <c:if test="${car.manufacturer eq man_selected}">
        <option value="${car.id}">${car.model}</option>
      </c:if>
   </c:forEach>    
</select>

<script>
  function getManufacturer()
  {
     man_selected = document.getElementById('id_manufacturer').value;
  }
</script>

Как я делаю для обновления 'образцовых' избранных опций согласно выбранному 'man_selected'?

1
задан BalusC 27 May 2010 в 16:49
поделиться

1 ответ

В основном есть 3 способа достичь этого:

  1. Используйте JavaScript для отправки формы на сторону сервера при изменении выпадающего списка и позвольте JSP/сервлету загрузить и отобразить дочерний выпадающий список соответственно на основе параметра запроса. Технически это самый простой способ, но и наименее удобный для пользователя. Вероятно, вы также захотите оживить все остальные вводимые значения формы.

  2. Позвольте JSP заполнить значения в массиве JavaScript и используйте функцию JavaScript для загрузки и отображения дочернего выпадающего списка. Немного сложнее, конечно, если вы еще не знаете JavaScript, но это более удобно для пользователя. Единственная оговорка заключается в том, что этот способ неэффективен с точки зрения пропускной способности и памяти, если у вас относительно много выпадающих элементов.

  3. Пусть JavaScript выполняет асинхронный HTTP-запрос на стороне сервера и отображает дочерние выпадающие элементы соответствующим образом. Сочетает в себе лучшее из вариантов 1 и 2. Эффективно и удобно для пользователя.

Я опубликовал расширенный ответ с примерами кода здесь: Заполнение дочерних выпадающих списков в JSP/Servlet.

2
ответ дан 3 September 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: