0

我正在尝试从数据库中填充运行时的下拉列表,每当用户从下拉列表中选择城市时,然后在下一个下拉列表中,它将填充数据库中的相应值。我怎样才能在 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>
4

2 回答 2

2

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

您可能只想摆脱scriptlet并添加一个 servlet ,以便您的 JSP 更易于维护。

也可以看看:

于 2012-02-11T18:35:40.473 回答
0

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

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

于 2012-02-11T18:44:15.313 回答