⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autocompleteaction.java

📁 自动补全下拉列表中的值
💻 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 + -