2010-07-21 193 views
1

我在处理两个链接的下拉列表时遇到了困难,下拉列表1将从数据库中获取值并基于用户的选择,它将获取有关记录下拉列表2.JSP:下拉列表2取决于下拉列表1

我试图在我的jsp中使用该代码做到这一点,但它没有工作,许多人建议使用JavaScript。其实,我不知道更多的ABOT 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> 

回答

4

你使假定的Java存在于小脚本代码被在客户端执行的根本错误!

看看lifecycle of a JSP。之后,你将会更好地理解你的代码为什么不起作用。
此后,您应该尝试使用AJAX查看一些Cascading Dropdown examples

如果所有这些都没有帮助 - 再次发布,它会更容易引导你通过。

+0

Ayup。当我第一次学习JSP时,客户端代码和服务器端代码之间的区别也让我失望;一旦你在自己的脑海中得到它,你会为自己在盲人小巷中追逐糟糕的解决方案留下很多麻烦。如果你想避免使用Javascript,你需要在用户从列表1中选择一个选项并根据选择重新创建页面时提交表单,这当然是可行的,但会给你带来很多实施头痛的问题。为了根据用户的选择来调整显示器,Javascript是工作的正确工具。学习它。 – BlairHippo 2010-07-21 14:52:55

+0

谢谢,我会尽我所能 – maas 2010-07-21 16:01:11

3

因为@anirvan已经完美地总结了两个词,我不能打败你,所以我没有心情发表一个扩展的答案。你正在制造一个根本性错误

要点:Java/JSP运行在Web服务器上,生成一堆HTML/CSS/JS,并通过网络从web服务器发送到webbrowser。网页浏览器(例如MSIE,Firefox等)单独检索并理解HTML/CSS/JS并开始显示/应用/运行它。如果Java/JSP已完成其任务,则在浏览器中执行右键单击>查看源代码时,您不应该看到的任何行。让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()等等。

这里有一堆“必读”链接了解如何在一个和其他配合在对方如何一个和其他使用:

嗯,这个答案是毕竟多一点比延长我的意思是它是...无论如何,希望它可以帮助!

+0

谢谢,我会尽我所能 – maas 2010-07-21 16:00:49