2010-07-21 66 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