JSP:下拉列表2取决于下拉列表1

时间:2010-07-21 13:22:33

标签: java javascript jsp

我在处理两个链接下拉列表时遇到困难,下拉列表1将从数据库中获取值,并根据用户的选择,它将在下拉列表2中获取相关记录。

我尝试在我的jsp中使用该代码执行此操作,但它不起作用,并且许多人建议使用javascript。事实上,我不太了解更多的JS,所以请你帮帮我

<select size="1" name="shop_category"><option value="NONE">  
<%  
             try  
             {  
                            ResultSet rs=null;  
                            Statement st1=null;  
                            String query = "select Category_name, category_id from shop_category_lkup";  
                            st1 = conn1.createStatement();  
                            rs = st1.executeQuery(query);  
                            while(rs.next())                  
            {  
       String sz_Selected="";  
             if (rs.getString("category_id").equals(shop_category))  
             {  
               sz_Selected = "selected";  
             }  
%>  
            <option value="<%=rs.getString("category_id")%>" <%=sz_Selected%>>  
    <%=rs.getString("category_name")%></option>  
<%  
                            }  
            }  
            catch (Exception e) {  
  e.printStackTrace();  
}  
%>  
</select>  

<select size="1" name="rent_category"><option value="NONE">  
<%  
             try  
             {  
                            ResultSet rs=null;  
                            Statement st1=null;  
                            String query = "select r.Category_name, r.category_id from rent_category_lkup r, shop_categpry_lkup s where r.category_id=s.category_id";  
                            st1 = conn1.createStatement();  
                            rs = st1.executeQuery(query);  
                            while(rs.next())                  
            {  
       String sz_Selected="";  
             if (rs.getString("category_id").equals(rent_category))  
             {  
               sz_Selected = "selected";  
             }  
%>  
            <option value="<%=rs.getString("category_id")%>" <%=sz_Selected%>>  
    <%=rs.getString("category_name")%></option>  
<%  
                            }  
            }  
            catch (Exception e) {  
  e.printStackTrace();  
}  
%>  
</select>

2 个答案:

答案 0 :(得分:4)

你假设javalet中存在的Java代码在客户端执行,这是一个根本性的错误!

看看lifecycle of a JSP。在此之后,您将处于更好的位置,以了解您的代码无法正常工作的原因 此后,您应该尝试使用AJAX查看一些Cascading Dropdown examples

如果所有这些都无济于事 - 再次发布,这将更容易引导您完成。

答案 1 :(得分:3)

我没有心情发表一个延伸的答案,因为@anirvan已经用两个词完全总结了一些我无法理解的词:你正在犯一个基本错误

关键点:Java / JSP在Web服务器上运行,生成一堆HTML / CSS / JS并通过网络从websserver发送到webbrowser。 webbrowser(例如MSIE,Firefox等)单独检索和理解HTML / CSS / JS并开始显示/应用/运行它。如果Java / JSP完成了它的任务,那么在做右键单击&gt;时,你不应该看到任何行。 webbrowser中的查看源。让webbrowser(JavaScript)中的代码和webserver(Java / JSP)中的代码相互通信的唯一方法是让JavaScript发送HTTP请求并对其进行Java / JSP响应。

在JavaScript中发送HTTP请求可以通过多种方式完成:

  1. 提交表单:document.getElementById('formId').submit()
  2. 更改窗口位置:window.location = 'http://www.google.com';
  3. 触发Ajaxical请求:new XMLHttpRequest()等等。
  4. 这里有一堆“必读”链接,用于了解彼此之间的相互关系以及应该应该如何使用

    嗯,这个答案毕竟比我的意思更加延伸......无论如何,希望它有所帮助!