首先低调的来个建议:送给做大项目的猿媛们。一般大公司大项目都比较老了,大家主要看看设计,个人建议在新功能的细节上尽量有些创意。也正是这样的想法才有了杨小一这个实现。废话不多说,上代码。
jquery.autocomplete.css
jquery.autocomplete.min.js
jquery-1.4.2.min.js
这三个文件有很多,网上有很多大家自己找。
jsp文件如下:
$(function() {//kh_name即需要自动补全的字段的id 可根据自己实际情况自由改变
$('#kh_name').autocomplete("saveProduct.do", {//此处根据自己需要填写url
max: 7, //列表里的条目数
minChars: 1, //自动完成激活之前填入的最小字符从0开始,若填写0双击即激活
width: 300, //提示的宽度,溢出隐藏
scrollHeight: 300, //提示的高度,溢出显示滚动条
matchContains: true, //包含匹配,就是data参数里的数据,是否只要包含文本框里的数据就显示
mustMatch:true,
autoFill: false, //自动填充
formatItem: function(row) {//需要显示的结果 row为每一行的数组
return row[0];// row数组下标根据java代码部分自己调整
}
}).result(function(event, row, formatted) {
$("#kh_no").val(row[1]);//给客户编号赋值,row数组下标根据java代码部分自己调整
});
});
jsp 只能截图了,要不新浪自动编译,程序员,我们懂得:
java文件截图是为了大家先有个清楚的看见,这里还有一个地方涉及到乱码的处理。本想分开写,还是偷个懒吧。大过年的,不好意思啊!代码贴到下面了。对了,jsp的案例是测试用的,java案例是实际开发使用的。但是我相信聪明的媛猿们一定能整合好,非常容易了。记住,乱码问题处理后台。是response 网上很多事request.估计是大侠们的笔误,不过浪费了不少时间。
代码:
js 表单对应的后台:
public String complete() throws Exception {
System.out.println("---------已经进入Complete--------");
setUserInfo();
PrintWriter out = null;// super.getResponse().getWriter();
try
{
System.out.println("已经进入struts 可以进行自动补全的代码实现");
//PrintWriter out=this.getResponse().getWriter();
//String kh_name = request.getAttribute("kh_name").toString();
String mname = super.getRequest().getParameter("q").toString();//必须是jquery 自定义 可以查看http 头文件
//String mnameUtf = new String(mname.getBytes("iso-8859-1"),"utf-8");
System.out.println(mname+"===UTF");
object_base.setMname(mname);
List list = matterBaseInfoService.getBaseInfoByMName(object_base);
String str = null ;
//if(list.size()!=0){
//模糊查询,得到
for(MatterBaseInfo object_base :list){
String stockId = object_base.getId()+"-"+object_main.getCityId();
super.getResponse().setCharacterEncoding("UTF-8"); //这里不设置编码会有乱码
super.getResponse().setContentType("text/html;charset=utf-8");
super.getResponse().setHeader("Charset","UTF-8");
// jquery按 | 将str分成数组
str=object_base.getMname()+"|"+object_base.getClassOneName()+"|"+object_base.getClassTwoName()+"|"+object_base.getClassThreeName()+"|"+object_base.getUnit()+"|"+stockId+"|"+object_base.getId();
out= super.getResponse().getWriter();//改代码一定要放到 super.getResponse().setCharacterEncoding("UTF-8"); 代码的后面
out.println(str);//用println 会自动加 \n jquery用它区分每一行
}
}
catch (Exception e)
{
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
System.out.println("complete()="+sw.getBuffer().toString());
}finally{
out.flush();
out.close();
}
return null;
}