Veritabanından arama yapan bir autosuggestion arama kutusu istiyorum.Bir sütun kullanıcı aramasının bu veritabanı sütunları açılır listesini sağladığını seçme özelliğim var. iyi çalışıyor.Ama başka bir sütun seçerken, hem ilk seçilen sütunu hem de ikinci seçilen sütunu arar. Ben istiyorum değil.Ondan beni çıkarın İşte bir kod burada.Mvc tasarım deseni vardır.
Index.html
autosuggestion için jsp arama kutusu açılır listeden veritabanının sütununu seçerek arama kutusu
<script type="text/javascript">
$(function(){
$("#country").autocomplete("find.me", {
extraParams: {
choice: function() {
return $("#searchby").val();
}
}
});
});
</script>
<div>
Search By:
<select name="searchby" id="searchby" >
<option disabled selected value> -- select an option -- </option>
<option value="name">Name</option>
<option value="roll_no">Roll No</option>
<option value="city">City</option>
<option value="pin_code">Pin Code</option>
<option value="state">State</option>
<option value="country">Country</option>
</select>
</div>
<span class="input input--nariko">
<input id="country" class="input__field input__field--nariko" type="text" id="input-20" name="country" />
<label class="input__label input__label--nariko" for="input-20">
<span class="input__label-content input__label-content--nariko">Type Something</span>
</label>
</span>
Servlet Kontrolörü
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out=response.getWriter();
String searchBy=request.getParameter("choice");
String[] arr=new AutoCompleteDao().autoComplete(searchBy);
request.setAttribute("arr", arr);
RequestDispatcher requestDispatcher=request.getRequestDispatcher("list.jsp");
requestDispatcher.forward(request, response);
}
Dao Sınıf AutocompleteDao.java
public class AutoCompleteDao { özel statik nihai Dize DRIVER_NAME =" com.mysql.jdbc.Driver" ; özel statik son Dize URL = "jdbc: mysql: // localhost: 3306 /"; özel statik son Dize DB_NAME = "autotest"; i adını seçtiğinizde bir sonuç
List.jsp İşte
<%String[] str=null;
str=(String[])request.getAttribute("arr");
if(str!=null){
//jQuery related start
String query = (String)request.getParameter("q");
int cnt=1;
for(int j=0;j<str.length;j++)
{
if(str[j].toUpperCase().startsWith(query.toUpperCase()))
{%>
<%=str[j] %>
<% }
}
str=null;
//jQuery related end
}
%>
görüntülüyor
private static final String USER_NAME="root";
private static final String PASSWORD="[email protected]";
Connection connection;
public String[] autoComplete(String searchBy){
PreparedStatement stmt=null;
ResultSet resultSet=null;
String query=null;
try{
//Register JDBC Driver
Class.forName(DRIVER_NAME).newInstance();
//open a connection
connection=(Connection)DriverManager.getConnection(URL+DB_NAME,USER_NAME,PASSWORD);
switch(searchBy){
case "name":
query= "SELECT name FROM test";
break;
case "country":
query="SELECT country FROM test";
break;
}
stmt=(PreparedStatement) connection.prepareStatement(query);
resultSet= stmt.executeQuery();
List li = new ArrayList();
while(resultSet.next())
{
li.add(resultSet.getString(1));
}
}
catch(SQLException e){
e.printStackTrace();
}
catch(ClassNotFoundException e){
e.printStackTrace();
}
catch(InstantiationException e){
e.printStackTrace();
}
catch(IllegalAccessException e){
e.printStackTrace();
}
finally {
try{
if(stmt!=null)
stmt.close();
if(connection!=null)
connection.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
return li.toArray(new String[li.size()]);
}
Web.xml
<servlet>
<servlet-name>AutoCompleteServlet</servlet-name>
<servletclass>AutoCompleteServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AutoCompleteServlet</servlet-name>
<url-pattern>/find.me</url-pattern>
</servlet-mapping>
Ve list.jsp dropdownlist ve autosuggesstion yazarak bir eşleşme bulunduğunda veritabanından adını gösterir. Ancak ülke seçtiğimde. Örneğin, hem ülke hem de veritabanından gelen adı önerir. Gerçekten neden anlayamıyorum? Bu noktada end
anda
$("#country").autocomplete("find.me",{extraParams: {choice: end}});
boş dize olduğunu ve arka sonuna kadar yolunda çalışacağız ve içinde default
durumda isabet:
yok onun not.When ben ülkeyi seçin. Her iki girdiyi gösterir @YuliiaChuhui – Arrow