test.jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=gbk" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>jqGrid练习</title>
<meta http-equiv="content-type" content="text/html; charset=gbk"/>
<script src="<%=path%>/jqgrid/js/jquery-1.5.2.min.js"></script>
<script src="<%=path%>/jqgrid/js/jquery.autocomplete.js"></script>
<link rel="stylesheet" href="<%=path%>/jqgrid/css/jquery.autocomplete.css">
<script type='text/javascript'>
$(document).ready(function()
{
$("#queryCon").autocomplete("../../shujuweihu/shujuweihu_listTest.action",
{
minChars: 1,
max:50,
width: 150,
matchContains: true,
autoFill: false,
//如果需要另外传值给action的话可以用这样的方式,如果只是把input里面的值传递给action的话,可以不写
extraParams:
{
queryCon: function()
{
return $("#queryCon").val();
}
},
//进行对返回数据的格式处理
parse: function(joinresult)
{
//content为我action里面定义的值
data = joinresult.content;
var rows = [];
for(var i=0; i<data.length; i++)
{
rows[rows.length] =
{
//我没有特殊的要求,所以三个写的一样
data:data[i],
value:data[i].item_name,
//result里面显示的是要返回到列表里面的值
result:data[i].item_name
};
}
return rows;
},
formatItem:function(item)
{
//我没有特殊的要求,直接返回了
return item.item_name;
}
});
});
</script>
</head>
<body>
<input type='text' style='width: 300px;' id='queryCon' name="queryCon" />
<input type='submit' value="All Values" />
</body>
</html>
Action:
private List<ShuJuWeiHu> content;
public List<ShuJuWeiHu> getContent() {
return content;
}
public void setContent(List<ShuJuWeiHu> content) {
this.content = content;
}
private String queryCon;
public void setQueryCon(String queryCon) {
this.queryCon = queryCon;
}
public String getQueryCon() {
return queryCon;
}
//
public String listTest() throws Exception
{
queryCon = PubFunction.latin1ToUTF8(queryCon);// queryCon = new String(queryCon.getBytes("ISO-8859-1"), "UTF-8");
List<ShuJuWeiHu> content=ShuJuWeiHuService.test111(queryCon);
setContent(content);
return "autocomplete";
}
struts.xml
<package name="shujuweihu" extends="json-default" namespace="/shujuweihu">
<action name="shujuweihu_*" class="com.project.action.admin.ShuJuWeiHuAction" method="{1}">
<result name="autocomplete" type="json"></result>
</action>
sql:
public static List<ShuJuWeiHu> test111(String key){
DataManager dm = DataManagerImpl.getDataManager ();
StringBuffer sql = new StringBuffer("select key_id,item_name from DingDanZhiXing where item_name like '%");
sql.append (key);
sql.append ("%'");
List<ShuJuWeiHu> list=dm.executeQuery(sql.toString (),null,ShuJuWeiHu.class);
log.info (sql.toString ());
return list;
}
大功告成了! 有的同学反映 找不到Action 的问题 我这里说下 是你导入JS的问题 请到官方下载jquery.autocomplete.js !!!!