struts2 autocompleter标签 动态下拉菜单

本文详细介绍了如何在Struts框架中利用autocompleter标签实现自动完成功能的下拉框,包括使用Ajax主题、配置autocompleter标签参数、以及通过AJAX调用后台获取数据的过程。

<struts:autocompleter>,autocompleter标签具有自动完成功能的下拉框,能根据所填写的内容筛选下拉框的内容。使用autocompleter标签必须使用Ajax主题,因为它用到了DOJO的JavaScript库

autocompleteAjaxTag.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="struts"%>
<struts:head theme="ajax" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
	<struts:url id="dataUrl" value="/autocompleteAjaxData1.jsp" />
	<!-- 数据URL -->
	<struts:autocompleter name="country" theme="ajax" href="%{dataUrl}"
		loadOnTextChange="true" loadMinimumCount="0" autoComplete="false"
		showDownArrow="true" indicator="indicator" />
	<img id="indicator" src="images/loading.gif">
</body>
</html>

autocompleteAjaxData1.jsp

获取前缀,找到前缀匹配项,封装成JSONArray,然后回传。

<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import=" net.sf.json.JSONArray"%>
<%@page import=" java.io.IOException"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%
	out.clear();//清空输出数据
	request.setCharacterEncoding("UTF-8");//设置request编码
	response.setHeader("Pragma", "no-cache");//禁止缓存
	response.setHeader("cache-control", "no-cache");
	response.setDateHeader("Expires", 0);

	List<String> countries = new ArrayList<String>();
	countries.add("Afghanistan");
	countries.add("Aland Islands");
	countries.add("Albania");
	countries.add("Algernia");
	countries.add("American Samno(USA)");
	countries.add("Andorra");

	String countryPrefix = request.getParameter("country");//获取AutoCompleter已经填写的内容
	if (null == countryPrefix) {
		countryPrefix = "";
	}
	List<String> buffer = new ArrayList<String>();

	for (int i = 0; i < countries.size(); i++) {
		if (countries.get(i).toLowerCase()
				.startsWith(countryPrefix.toLowerCase())) {
			buffer.add(countries.get(i));
		}
	}
	JSONArray jsonArray = JSONArray.fromObject(buffer);
	Thread.sleep(500);//当前线程睡眠0.5秒,演示indicator
	try {
		response.setContentType("aplication/json;charset=UTF-8");
		out.print(jsonArray);
	} catch (IOException e) {
		e.printStackTrace();
	}
%>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值