📄 autocompleteaction.java
字号:
package cn.tap2008.autocomplete.web.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import cn.tap2008.commons.core.util.Escape;
/**
* @author Tang Anping
* @since Oct 7, 2007
* 自动完成Action
*/
public class AutoCompleteAction extends DispatchAction {
private static final Logger logger = Logger.getLogger(AutoCompleteAction.class);
private static final List provinces = new ArrayList();
static {
provinces.add("北京市"); provinces.add("上海市"); provinces.add("天津市");
provinces.add("重庆市"); provinces.add("河北省"); provinces.add("山西省");
provinces.add("河南省"); provinces.add("辽宁省"); provinces.add("吉林省");
provinces.add("黑龙江省");provinces.add("内蒙古"); provinces.add("江苏省");
provinces.add("山东省"); provinces.add("安徽省"); provinces.add("浙江省");
provinces.add("福建省"); provinces.add("湖北省"); provinces.add("湖南省");
provinces.add("广东省"); provinces.add("广西省"); provinces.add("江西省");
provinces.add("四川省"); provinces.add("海南省"); provinces.add("贵州省");
provinces.add("云南省"); provinces.add("西藏自治区"); provinces.add("陕西省");
provinces.add("甘肃省"); provinces.add("青海省"); provinces.add("宁夏回族自治区");
provinces.add("新疆维吾尔自治区"); provinces.add("台湾"); provinces.add("香港");
provinces.add("澳门");
}
/**
* 输入的关键字,可以高亮显示,返回的是div不需要解析,所以速度快,而且带有缓存
* 模拟获取数据
*/
public ActionForward province(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setContentType("text/html;charset=UTF-8");
//显示记录的条数,如果没有传参数,则默认为10。
String count = request.getParameter("count");
if(count == null || "".equals(count)) {
count = "10";
}
String inputValue = request.getParameter("inputValue");
logger.info("province() inputValue:" + inputValue);
//如果是GBK的,中文需要转换,如果javascript用escape编码的话就不需要改变,所有字符集都可用
inputValue = Escape.unescape(inputValue);
logger.info("province() inputValue:" + inputValue);
// List provinceList = new ArrayList();
int len = provinces.size();
String province = "";
String StrongProvince = "";
//记录加载的条数
int amount = 0;
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < len; i++) {
province = (String) provinces.get(i);
if(province.indexOf(inputValue) != -1) {
StrongProvince = province.replaceAll(inputValue, "<span class=\"boldfont\">" + inputValue + "</span>");
//provinceList.add(province);
//如果要给隐藏域复制可以在onselect的时候加上$('studentID').value = ''
buffer.append("<div onselect=\"this.text.value = '")
.append(province)
.append("';$('provinceId').value = '")
.append(province).append("'\">")
.append(StrongProvince)
.append("</div>");
amount++;
if(amount >= Integer.parseInt(count)) {
break;
}
}
}
logger.info("province() div:" + buffer.toString());
PrintWriter out = response.getWriter();
out.println(buffer.toString());
return null;
}
/**
* 输入的关键字,可以高亮显示,返回的是div不需要解析,所以速度快,而且带有缓存
* 模拟获取数据
*/
public ActionForward city(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setContentType("text/html;charset=UTF-8");
/*//显示记录的条数,如果没有传参数,则默认为10。
String count = request.getParameter("count");
if(count == null || "".equals(count)) {
count = "10";
}*/
String inputValue = request.getParameter("inputValue");
logger.info("city() inputValue:" + inputValue);
//中文需要转换,使用javascript的escape编码,所有字符集都可用
inputValue = Escape.unescape(inputValue);
logger.info("city() inputValue:" + inputValue);
int pageNo = 1;
if (request.getParameter("page") != null) {
pageNo = Integer.valueOf(request.getParameter("page")).intValue();
}
List cityList = new ArrayList();
int pageSize = 9;
int len = provinces.size();
String province = "";
String StrongProvince = "";
//记录加载的条数
int amount = 0;
StringBuffer buffer = new StringBuffer("<table width='100%' cellpadding='2' cellspacing='0'>");
for (int i = 0; i < len; i++) {
province = (String) provinces.get(i);
if(province.indexOf(inputValue) != -1) {
cityList.add(province);
/*
//高亮显示
StrongProvince = province.replaceAll(inputValue, "<span class=\"boldfont\">" + inputValue + "</span>");
//provinceList.add(province);
//如果要给隐藏域复制可以在onselect的时候加上$('studentID').value = ''
buffer.append("<div onselect=\"this.text.value = '")
.append(province)
.append("';$('provinceId').value = '")
.append(province).append("'\">")
.append(StrongProvince)
.append("</div>");
amount++;
if(amount >= Integer.parseInt(count)) {
break;
}*/
}
}
len = cityList.size();
int totalPageSize = 0;
if(len % pageSize == 0) {
totalPageSize = len / pageSize;
} else {
totalPageSize = len / pageSize + 1;
}
int totalResult = pageSize * pageNo;
if(totalResult > len) {
totalResult = len;
}
String city = "";
for (int i = (pageSize * (pageNo - 1)); i < totalResult; i++) {
city = (String) cityList.get(i);
//高亮显示
StrongProvince = city.replaceAll(inputValue, "<span class=\"boldfont\">" + inputValue + "</span>");
buffer.append("<tr onselect=\"this.text.value = '").append(city).append("';\">")
.append("<td>").append(StrongProvince).append("</td>")
.append("<td align='right'>").append(++amount).append("</td>")
.append("</tr>");
}
buffer.append("</table>");
if(pageNo > 1) {
buffer.append("<a href='?page=" + (pageNo - 1)+ "' style='float:left' class='page_up'>Prev</a>");
}
logger.info(pageNo + " : " + totalPageSize);
if(pageNo < totalPageSize) {
buffer.append("<a href='?page=" + (pageNo + 1) + "' style='float:right' class='page_down'>Next</a>");
}
logger.info("city() div:" + buffer.toString());
PrintWriter out = response.getWriter();
out.println(buffer.toString());
return null;
}
public static void main(String[] args) {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -