2012-03-02 48 views
0

我一直在尝试和搜索这么久,但无法找到正确的方式做到这一点。我有这个数据库,我想从中检索一些值,这将是我的自动完成数据源。我有我的连接工作,我能够检索我的方法正在返回的数组中的值。但我无法超越这个。请帮我拿出一个jsp页面,我可以将这个数组作为json数据检索,或者我可以直接检索这个数组,并将其作为我的自动完成源代码放入我的jsp代码中。无论是Dojo还是J查询,我都可以使用任何框架。提前致谢。使用数据库作为源的自动完成实现。

populatetextbox.java

package classes.web; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.List; 

public class PopulateTextbox { 

    List <String>rowValues = new ArrayList<String>(); 
    String[] contactListNames; 
    Connection con=null; 
    Statement st=null; 
    ResultSet rs=null; 

    public String[] method(){ 


     try{ 


     String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
     Class.forName(driver); 

     String db = "jdbc:odbc:Practice_Database"; 
     con = DriverManager.getConnection(db,"",""); 

     st = con.createStatement(); 
     String sql = "SELECT Emp_Name FROM EmployeeSearch"; 
     rs = st.executeQuery(sql); 

     while(rs.next()){ 

      rowValues.add(rs.getString("Emp_Name")); 
     } 
     contactListNames = (String[]) rowValues.toArray(new String[rowValues.size()]); 

    }catch(Exception e){System.out.println(e);} 
    /*finally{ 
     try { 
       if(con!=null)con.close(); 
      } catch (SQLException e) { 

       e.printStackTrace(); 
      } 
     try { 
      if(rs!=null)rs.close(); 
     } catch (SQLException e) { 

      e.printStackTrace(); 
     }try { 
      if(st!=null)st.close(); 

     } catch (SQLException e) { 

      e.printStackTrace(); 
     } 


    }*/ 
     return contactListNames; 

    } 
} 

回答

0

既然你提到使用JSP,道场做这件事是: 1)包括道场和支持文件在你的JSP(在部分) 2)在你的Java代码,使用诸如GSon之类的库将java数组转换为JSON。 (或者,您甚至可以在准备java数组时使用字符串构造JSON对象) 3)在html正文部分的JSP: 中使用dojo组合框或filteringSelect小部件(均支持自动完成)。例如,请参见: http://livedocs.dojotoolkit.org/dijit/form/FilteringSelect http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/tests/form/_autoComplete.html?testWidget=dijit.form.FilteringSelect http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/tests/form/_autoComplete.html?testWidget=dijit.form.ComboBox

我的另一个问题提供了以下答案可能帮助你如何在JSP包括细节: Displaying Data on a JSP page using Dojo Data grid

或者,你可以使用普通的HTML您表示层并使用AJAX获取组合框的数据(例如,通过返回JSON的servlet) 我更喜欢这种方法,因为它使表示层与中间层和后端完全分离

您也可以使用JQuery UI小部件代替Dojo: http://jqueryui.com/demos/autocomplete/