Автозаполнение реализации с использованием базы данных в качестве источника. - PullRequest
0 голосов
/ 02 марта 2012

Я пытался и искал это так долго, но не смог найти правильный способ сделать это. У меня есть база данных, из которой я хочу получить некоторые значения, которые будут моим источником данных для автозаполнения. у меня работает соединение, и я могу получить значения в массиве, который возвращает мой метод. но я не могу пройти мимо этого. Пожалуйста, помогите мне с 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 голосов
/ 03 марта 2012

Поскольку вы упомянули об использовании JSP, у dojo есть один способ сделать это: 1) Включите dojo и вспомогательные файлы в ваш JSP (в разделе) 2) В своем коде Java используйте библиотеку, такую ​​как GSon, для преобразования массива java в JSON. (В качестве альтернативы вы можете даже создать объект JSON в виде строки при подготовке массива Java) 3) используйте комбинированный список Dojo или виджет filteringSelect (оба поддерживают автозаполнение) в вашем JSP: в разделе тела 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: Отображение данных на странице JSP с использованием сетки данных Dojo

В качестве альтернативы, вы можете использовать обычный HTML для своего уровня представления и использовать AJAX для получения данных для вашего комбинированного списка (например, через сервлет, который возвращает JSON) Я предпочитаю такой подход, поскольку он сохраняет уровень представления полностью отделенным от вашего среднего уровня и бэкэнда

Вы также можете использовать виджеты JQuery UI вместо Dojo: http://jqueryui.com/demos/autocomplete/

...