1

有一个以品牌和型号为属性的“汽车”类。我有一个此类项目的列表List<Car> myCars。我需要在 JSP 页面中表示 2 个下拉列表,一个用于品牌,另一个用于模型,当您选择品牌时,模型列表中仅显示该品牌的下拉列表。我不知道如何以动态方式做到这一点。

任何建议从哪里开始?谢谢

更新

好的,我现在要做的是在请求中发送一个包含所有品牌名称的列表和一个项目列表。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”刷新“模型”选择选项?

4

1 回答 1

2

基本上有3种方法可以实现这一点:

  1. 使用 JavaScript 在下拉列表更改时将表单提交到服务器端,并让 JSP/Servlet 根据请求参数相应地加载和显示子下拉列表。技术上最简单的方式,但也是最不友好的方式。您可能还想恢复表单的所有其他输入值。

  2. 让 JSP 填充 JavaScript 数组中的值并使用 JavaScript 函数来加载和显示子下拉列表。有点棘手,当然如果你还不知道 JavaScript,但这对用户更友好。唯一需要注意的是,当您有相对大量的下拉项目时,这会导致带宽和内存效率低下。

  3. 让 JavaScript 向服务器端发出一个异步 HTTP 请求并相应地显示子下拉菜单。结合了最佳选择 1 和 2。高效且用户友好。

我在这里发布了带有代码示例的扩展答案:Populating child dropdownlists in JSP/Servlet

于 2010-05-27T16:52:48.687 回答