Заполните второй раскрывающийся список при выборе первого раскрывающегося списка

Я пытаюсь заполнить раскрывающийся список во время выполнения из базы данных, всякий раз, когда пользователь выбирает город из раскрывающегося списка, затем в следующем раскрывающемся списке он будет заполнять соответствующие значения из базы данных. Как я могу добиться этого в 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>

person Community    schedule 11.02.2012    source источник


Ответы (2)


Первым шагом будет добавление onchange="submit()" в первое раскрывающееся меню, чтобы форма автоматически отправлялась с помощью JavaScript. Затем вы можете просто заполнить второй раскрывающийся список на основе представленного значения первого раскрывающегося списка, который вы получаете как параметр запроса обычным способом.

Возможно, вы захотите только избавиться от скриптлетов и добавьте сервлет, чтобы ваш JSP был более удобным в сопровождении.

Смотрите также:

person BalusC    schedule 11.02.2012

Чтобы это работало, либо первый выбор пользователя (город), либо первый выбор пользователя (город), должен быть отправлен на сервер, который затем может найти варианты выбора, доступные для этого города, а затем повторно отобразить страницу. Или вы можете найти все дома для всех городов, а затем иметь javascript, который переключает содержимое поля выбора домов в зависимости от того, какой выбор сделан в первом.

В качестве побочного примечания, если вы не делаете очень упрощенную страницу (и вы не ожидаете, что ее нужно будет поддерживать), это плохой дизайн для смешивания вашей логики доступа к базе данных с вашей логикой генерации представления...

person Emil H    schedule 11.02.2012