我正在尝试从数据库填充运行时下拉列表,只要用户从下拉列表中选择城市,然后在下一个下拉列表中,它将填充数据库中的相应值。我怎样才能在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>
答案 0 :(得分:2)
第一步是将onchange="submit()"
添加到第一个下拉列表中,以便JavaScript自动“提交”表单。然后,您可以根据通常方式检索为请求参数的第一个下拉列表的提交值来填充第二个下拉列表。
您可能只想get rid个 scriptlet 并添加一个servlet,以便您的JSP更易于维护。
答案 1 :(得分:0)
要使其工作,必须将用户首选(城市)发送到服务器,然后服务器可以查找该城市可用的选择,然后重新呈现该页面。或者,您可以查找所有城市的所有房屋,然后根据在第一个房屋中进行的选择,使用javascript切换房屋选择框的内容。
作为旁注,除非你做一个非常简单的页面(并且你不希望它需要维护),否则将db访问逻辑与视图生成逻辑混合是不好的设计...