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によって「自動的に」送信されるようにすることです。次に、通常の方法でリクエストパラメータとして取得した最初のドロップダウンの送信された値に基づいて、2番目のドロップダウンを入力するだけです。

JSPをもう少し保守しやすくするために、スクリプトレットを削除してサーブレットを追加するだけよい場合があります。

参照:

于 2012-02-11T18:35:40.473 に答える
0

これを機能させるには、ユーザーの最初の選択(City)をサーバーに送信する必要があります。サーバーは、その都市で使用可能な選択を検索して、ページを再レンダリングできます。または、すべての都市のすべての家を検索し、最初の家で行われた選択に基づいて家の選択ボックスの内容を切り替えるJavaScriptを作成することもできます。

ちなみに、非常に単純なページを実行している場合を除いて(そして、それを維持する必要があるとは思わない場合)、データベースアクセスロジックとビュー生成ロジックを混在させるのは不適切な設計です...

于 2012-02-11T18:44:15.313 に答える