使用数据库作为源的自动完成实现。

时间:2012-03-02 09:25:26

标签: jquery autocomplete dojo

我一直在努力寻找这个问题很长时间,但无法找到正确的方法。我有这个数据库,我想从中检索一些值,这些值将是我的自动完成数据源。我有我的连接工作,我能够检索我的方法返回的数组中的值。但我无法超越这个。请帮我一个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;

    }
}

1 个答案:

答案 0 :(得分:0)

由于您提到使用JSP,dojo的一种方法是: 1)在JSP中包含dojo和支持文件(在本节中) 2)在Java代码中,使用诸如GSon之类的库将java数组转换为JSON。 (或者,您甚至可以在准备Java数组时将JSON对象构造为字符串) 3)在JSP中使用dojo combobox或filteringSelect小部件(都支持自动完成):  在HTML主体部分。例如,请参阅: 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/