JSP html/js:刷新“选择”选项

mwg9r5ms  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(108)

有一个“Car”类,属性为品牌和型号。我有一个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”刷新“model”选择选项?

zazmityj

zazmityj1#

基本上有3种方法可以实现这一点:
1.使用JavaScript在下拉列表发生变化时将表单提交到服务器端,并让JSP/Servlet根据请求参数加载和显示相应的子下拉列表。从技术上讲,这是最简单的方法,但也是最不用户友好的方法。您可能还希望恢复表单的所有其他输入值。
1.让JSP填充JavaScript数组中的值,并使用JavaScript函数加载和显示子下拉列表。如果您还不了解JavaScript,这可能会有点麻烦,但这更方便用户。唯一需要注意的是,当您有相对较多的下拉列表项时,这会导致带宽和内存效率低下。
1.让JavaScript向服务器端发出一个异步HTTP请求,并相应地显示子下拉列表。结合了选项1和选项2的优点。高效且用户友好。
我在这里发布了一个带有代码示例的扩展答案:Populating child dropdownlists in JSP/Servlet .

相关问题