Java 在选择第一个下拉列表时填充第二个下拉列表

Java 在选择第一个下拉列表时填充第二个下拉列表,java,jsp,drop-down-menu,scriptlet,Java,Jsp,Drop Down Menu,Scriptlet,我试图在数据库的运行时填充下拉列表,每当用户从下拉列表中选择城市时,在下一个下拉列表中,它将填充数据库中相应的值。如何在JSP中实现这一点 以下是我迄今为止所做的工作: <div class="label">City : </div> <div class="control"> <select name="city" id="city"> <% try { ResultSet rs = state.executeQuery("SE

我试图在数据库的运行时填充下拉列表,每当用户从下拉列表中选择城市时,在下一个下拉列表中,它将填充数据库中相应的值。如何在JSP中实现这一点

以下是我迄今为止所做的工作:

 <div class="label">City : </div>
 <div class="control">
 <select name="city" id="city">
 <%
 try {
 ResultSet rs = state.executeQuery("SELECT CITY_ID,CITY_NAME FROM CITY ORDER BY CITY_NAME");
 while (rs.next()) {
 %>
 <option value="<%=rs.getString(1)%>"><%=rs.getString(2) + " (" + rs.getString(1) + ")"%></option>
  <%
                                                                                                        }
                                                                                                    } catch (Exception ex) {
                                            %>
                                            <option value="ERROR">CITY NOT AVAILABLE</option>
                                            <%                                                        }
                                            %>
                                        </select>
                                    </div>
                                    <div style="clear:both;height:0px;"></div>
                                    <div class="label">Report To : </div>
                                    <div class="control">
                                        <select name="report_to" id="report_to">
                                            <%
                                                        try {
                                                            ResultSet rs = state.executeQuery("SELECT HOUSE_ID,HOUSE_ADD FROM HOUSE WHERE CITY_ID='PNP' ORDER BY HOUSE_ID");
                                                            while (rs.next()) {
                                            %>
                                            <option value="<%=rs.getString(1)%>"><%=rs.getString(2) + " (" + rs.getString(1) + ")"%></option>
                                            <%
                                                                                                        }
                                                                                                    } catch (Exception ex) {
                                            %>
                                            <option value="ERROR">HOUSE NOT AVAILABLE</option>
                                            <%                                                        }
                                            %>
                                        </select>
                                    </div>
                                    <div style="clear:both;height:0px;"></div>
城市:
城市不可用
报告给:
房子没空

第一步是在第一个下拉列表中添加
onchange=“submit()”
,这样表单将由JavaScript“自动”提交。然后,您可以根据第一个下拉列表的提交值填充第二个下拉列表,您可以按照通常的方式将其作为请求参数检索

您可能只想添加一组scriptlet并添加一个servlet,这样JSP就更易于维护

另见:
  • (显示了3种不同的方式以及具体示例)

要使其工作,必须将用户的第一选择(城市)发送到服务器,然后服务器可以查找该城市的可用选择,然后重新呈现页面。或者,您可以查找所有城市的所有房屋,然后使用javascript根据第一个选择框中的内容切换房屋选择框的内容

作为旁注,除非您正在做一个非常简单的页面(并且您不希望它需要维护),否则将db访问逻辑与视图生成逻辑混合在一起是不好的设计