【问题标题】:JSP dynamic dropdownlistJSP动态下拉列表
【发布时间】:2013-12-29 19:28:48
【问题描述】:

我需要根据另一个下拉列表中的选定字段填写下拉列表。我该如何实现?这是我的代码:

                <tr>
                <td>CITY :</td>
                <td><select name="city">
                        <%
                            while (rs.next()) {
                        %>
                        <option value="<%=rs.getString(1)%>"><%=rs.getString(1)%></option>
                        <%
                            }
                        %>
                </select></td>
            </tr>
            <%
            rs = db.runQuery(conn, "Select distinct town from adress where city='" + request.getParameter("city") +"'");
            %>
            <tr>
                <td>TOWN</td>
                <td><select name="town">
                        <%
                            while (rs.next()) {
                        %>
                        <option value="<%=rs.getString(1)%>"><%=rs.getString(1)%></option>
                        <%
                            }
                        %>
                </select>
            <tr>

第一个下拉列表正确填充,但第二个不工作。我该如何处理?

【问题讨论】:

    标签: jsp dynamic html-select


    【解决方案1】:

    你不能这样做的原因是JSP编译成Servlet并在服务器端运行。 Servlet 在您选择城市之前只运行一次。我认为最简单的解决方案是提交表单两次:

    <select name="city" onChange="this.form.submit();">
    

    更好的解决方案是在客户端使用 Ajax,但这需要更多的 JavaScript 或一些 JavaScript 库或 JSP 标签库。对于此类任务,jQuery 是一个非常有用的 JavaScript 框架。

    【讨论】:

    • 但是有问题。如果我选​​择下拉列表的第一项,表单没有被提交?无论如何定义下拉默认索引返回?
    • 我会在此之前添加一个新行: rs = db.runQuery(conn, "Select distinct town... String city = request.getParameter("city"); 并使用 (city!= null?city:"Defaultcity") 在该行
    • 但是下拉列表中总会有默认城市,因为选择操作后会重新加载表单?
    • 您也可以尝试在第一个选择中添加一个新的默认选项:
    • 我刚刚意识到,当表单重新提交时,第一个下拉列表的选定值更改为第一个索引,只是因为再次检索数据并重新填充下拉列表。
    猜你喜欢
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    相关资源
    最近更新 更多