2015-08-26 5 views
0

Заранее спасибо. У меня есть поле ввода Autocomplete, в котором мы можем ввести строку и с помощью jQuery Autocomplete. Я получаю раскрывающееся меню с JSP-страницы и что страница JSP вызывает функцию Java для извлечения данных из MYSQL.Как установить значение поля ввода автозаполнения при использовании автозаполнения JQuery с JSP

код HTML выглядит следующим образом.

<form> 
     <input type="hidden" id="autosuggest" name="autosuggest" value="Y"/> 
     <input type="text" name="Category" id="searchp" value=""> 
     <script> 
      $("#searchp").autocomplete({ 
       delay: 100, 
       autoFocus: true, 
       selectFirst: true, 
       source: 'ProviderSuggest.jsp', 
       select: function (event, ui) { 
        $('#autosuggest').val('Y'); 
       } 
      }); 
     </script> 
     <input type="submit" value="Submit"/> 
    </form> 

Ниже приведен код для ProviderSuggest.jsp

<%@page import="java.util.Map"%> 
<%@page import="java.util.HashMap"%> 
<%@page import="com.google.gson.Gson"%> 
<%@page import="java.util.ArrayList"%> 
<%@page import="java.util.Iterator"%> 
<%@page import="Functions.DBConnections"%> 
<%@page import="java.util.List"%> 
<% 
    String query = request.getParameter("term"); 
    List<String> CategoryList = new DBConnections().GetCategoryList(query); 
    Iterator CatIterator = CategoryList.iterator(); 
    String JCategory = ""; 
    Map CategoryMap = new HashMap(); 
    while (CatIterator.hasNext()) { 
     String Category = (String) CatIterator.next(); 
     String CategoryID = (String) CatIterator.next(); 
     CategoryMap.put(CategoryID, Category); 
    } 
    Gson gson = new Gson(); 
    JCategory = gson.toJson(CategoryMap); 
    System.out.println(JCategory); 
    //out.print(JCountry); 
    out.print(JCategory); 
%> 

Ниже приведен код для функции Java для получения данных из MySql

public static List GetCategoryList(String Keyword) { 
    List<String> CategoryList = new ArrayList<String>(); 
    try { 
     Class.forName(driverName).newInstance(); 
     Connection connection = DriverManager.getConnection(connectionURL + dbName, dbuserID, dbpwd); 
     PreparedStatement preStatement; 
     ResultSet resultSet; 
     String query = "SELECT Category, CategoryID FROM category WHERE Keywords LIKE '%" + Keyword + "%' AND ParentCatID != 0 Limit 10"; 
     preStatement = connection.prepareStatement(query); 
     resultSet = preStatement.executeQuery(query); 
     while (resultSet.next()) { 
      CategoryList.add(resultSet.getString(1)); 
      CategoryList.add(resultSet.getString(2)); 
     } 
     resultSet.close(); 
     preStatement.close(); 
     connection.close(); 
    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException ex) { 
     Logger.getLogger(DBConnections.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return CategoryList; 
} 

Если вы видите ProviderSuggest.jsp возвращает массив с CategoryID и Category. Когда я показываю их на переднем конце, я могу отображать категорию, и я пытаюсь установить значение этого поля ввода Autocomplete как идентификатор категории, чтобы при отправке формы я отправлял только идентификатор категории для дальнейшей обработки. Могу ли я узнать, что я ошибаюсь, поскольку я не могу установить значение поля ввода для КатегорииID.

Спасибо.

ответ

0

Я не поклонник JQuery/эксперт, но строка $('#autosuggest').val('Y'); говорит, что значение value имеет значение const Y, и это не значение, которое вы получили от сервера ?!

Плюс установить content-type ответ в JSP с использованием

<%@page language="java" contentType="application/json;charset=UTF-8" 
    pageEncoding="UTF-8"%> 

И кода Java будет более лучше, имея SQL стороны функции для вызова функции (запуск запроса), и передать (побег) значение функции через PreparedStatement

0

Если вы могли бы создать строку ответа, как это, вы можете установить пары значений ключа в текстовое поле.

Проверить ниже код:

var availableTags2 = [ { 
      label : "Category id1" 
      value : "Category val1", 
     }, { 
      label : "Category id2" 
      value : "Category val2", 

     } ]; 
+0

Спасибо за ответ. Как создать массив json, как вы упомянули, и как установить ярлык и значение в ярлыке jQuery – InkTekSol

+0

, и значение - это жестко закодированные значения, вы можете добавить id и значение, я имею в виду, что вы можете сформировать ответ в jsp, вы дали источник как jsp, так что pl формирует строку, как я имел в виду – mProME

+0

, вы могли бы помочь мне узнать, как создать такой массив json с помощью java и как мне получить доступ к нему при использовании функции автозаполнения jquery. Мне очень сложно это сделать. Мои данные поступают из mysql. – InkTekSol