亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? comboselecttag.java

?? 個人理財系統-fileutil的使用 是你的好幫手
?? JAVA
字號:
package ar.com.koalas.providers.taglibs.comboselect;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.Transformer;
import org.apache.struts.util.RequestUtils;

public class ComboSelectTag extends BodyTagSupport {
	private static final String ID_COMBO = ComboSelectTag.class.getName() + ".idCombo";
	private String property = null;
	private String name = null;
	private String metadata;
	private String[] metadataArray;
	private String[] cmbnames;
	private String[] cmbvalues;
	private String[] cmbonchange;
	private int id;
	private String addAllLabel = null;
	private String addSelectLabel = null;
	private List v = null;
	private Map selectData = null;
	
	public void addDdl(Ddl d) {
		v.add(d);
	}

	public void putSelectData(String property, SelectData data) {
		this.selectData.put(property, data);
	}
	
	private Iterator getFilteredIterator(final String parentKey, Map item, SelectData data) {
		if(parentKey==null)
			return data.getIterator();
		
		Iterator sdItInput = data.getIterator();
		//pasa el iterator a una coleccion.
		Collection colAux = CollectionUtils.collect(sdItInput, new Transformer() { public Object transform(Object arg0) { return arg0; }});
		data.setIterator(colAux.iterator());
		//filtra solo los que coincidan con el key del padre
		final Object parentKeyValue = item.get(parentKey);
		Collection filtered = CollectionUtils.select(colAux, new Predicate() {
			public boolean evaluate(Object obj) {
				try {
					Object key = BeanUtils.getProperty(obj, parentKey);
					//TODO controlar null, tipos, etc...
					return parentKeyValue.equals(key);
				} catch (Exception e) {
					e.printStackTrace();
				}			
				return false;
			}
		});
		
		return filtered.iterator();
	}
	
	private void populateMatrix(Collection col, Map item, Ddl ddl, int[] level, String parentKey) {
		SelectData data = (SelectData)this.selectData.get(ddl.getProperty());
		Iterator sdIt = this.getFilteredIterator(parentKey, item, data);
		
		while(sdIt.hasNext()) {
			Object obj = sdIt.next();
			try {
				Object key = BeanUtils.getProperty(obj, data.getKey());
				Object description = BeanUtils.getProperty(obj, data.getDescription());
				item.put(data.getKey(), key);
				item.put(data.getDescription(), description);
			} catch (Exception e) {
				e.printStackTrace();
			}			
			level[0]++;
			if(level[0]<v.size()) {
				Ddl ddlnext = (Ddl)v.get(level[0]);
				this.populateMatrix(col, item, ddlnext, level, data.getKey());
				level[0]--;				
			} else {
				level[0]--;
				col.add(new HashMap(item));
			}
		}
	}
	
	private Collection getPropertyFromContext() throws JspException {
		//primero me fijo si tengo selectData
		if(this.selectData.size()>0) {
			Ddl ddlroot = (Ddl)v.get(0); //obtiene el primero
			Collection col = new ArrayList();
			this.populateMatrix(col, new HashMap(), ddlroot, new int[] {0}, null);
			return col;
		} else {
			// Identify the bean containing our collection
			Object bean = null;
			try {
				if (name != null)
					if (property != null)
						bean = RequestUtils.lookup(pageContext, name, property, "request");
					else
						bean = RequestUtils.lookup(pageContext, name, "request");
				else
					bean = RequestUtils.lookup(pageContext, property, "request");
			} catch (Exception ex) {
			}
			if(bean==null) {
				try {
					if (name != null)
						if (property != null)
							bean = RequestUtils.lookup(pageContext, name, property, "session");
						else
							bean = RequestUtils.lookup(pageContext, name, "session");
					else
						bean = RequestUtils.lookup(pageContext, property, "session");
				} catch (Exception ex) {
				}
			}
			if (bean == null && this.property!=null)
				bean = pageContext.findAttribute(this.property);
	
			if (bean == null)
				return null;
	
			Collection col = (Collection) bean;
			if (col.size() == 0) {
				return null;
			}
			return col;
		}		
	}

	public void setProperty(String c) {
		this.property = c;
	}

	public void setName(String c) {
		this.name = c;
	}
	public String getName() {
		return this.name;
	}
	public void setMetadata(String c) {
		this.metadata=c;
	}

	private void loadSelectData() throws JspException {
		//obtiene el vector de Ddl's
		if (v == null) {
			throw new JspException("No se informaron selects");
		}
		cmbnames = new String[v.size()];
		cmbvalues = new String[v.size()];
		cmbonchange = new String[v.size()];
		for (int i = 0; i < v.size(); i++) {
			cmbnames[i] = ((Ddl) v.get(i)).getName();
			cmbvalues[i] = ((Ddl) v.get(i)).getValue();
			cmbonchange[i] = ((Ddl) v.get(i)).getOnChange();
		}
	}

	public int doStartTag() {
		this.v=new ArrayList();
		this.selectData=new HashMap();
		return (EVAL_BODY_INCLUDE);
	}

	public int doEndTag() throws JspException {
		metadataArray=null;
		this.validate();
		HttpServletRequest request = ((HttpServletRequest) pageContext.getRequest());
		Collection elementos = this.getPropertyFromContext();
		if(elementos==null)
			return EVAL_PAGE;
			
		//Determina el Id seg鷑 variables del request.
		Integer value = (Integer) ((HttpServletRequest) pageContext.getRequest()).getAttribute(ID_COMBO);
		if (value == null) {
			//es el primer tag utilizado en el request.
			id = 0;
		} else {
			id = value.intValue();
			id++;
		}
		request.setAttribute(ID_COMBO, new Integer(id));

		this.loadSelectData();
		TreeItem ddl = null;
		//Obtiene el TreeItem desde una colleccion de DynamicBeans
		try {
			if ("true".equalsIgnoreCase(this.getAddAllLabel()))
				ddl = TreeItemFactory.getInstance().createFromCollectionWithAllLabel(request, elementos, this.getMetadataArray());
			else if("true".equalsIgnoreCase(this.getAddSelectLabel()))
				ddl = TreeItemFactory.getInstance().createFromCollectionWithSelectLabel(request, elementos, this.getMetadataArray());
			else
				ddl = TreeItemFactory.getInstance().createFromCollection(request, elementos, this.getMetadataArray());
		} catch (Exception e) {
			throw new JspException("Error al obtener el arbol: " + e.toString());
		}

		StringBuffer sb = new StringBuffer("");
		sb.append(this.generateObjects());
		sb.append("<script language=\"JavaScript1.2\">\n<!--\n");
		sb.append(this.generateDeclaration());
		sb.append(this.generateTree(ddl));
		sb.append(this.generateRefillFunction());
		sb.append("refill");
		sb.append(id);
		sb.append("(-1, 0);\n");
		//limpia los valores iniciales.
		for (int i = 0; i < cmbvalues.length; i++) {
			sb.append("selvalue");
			sb.append(id);
			sb.append("[");
			sb.append(i);
			sb.append("]=\"\";\n");
		}

		sb.append("//-->\n</script>");
		//System.out.println(sb.toString());
		try {
			pageContext.getOut().write(sb.toString());
		} catch (Exception e) {
			throw new JspException("IO Error: " + e.getMessage());
		}
		return EVAL_PAGE;
	}

	private String generateDeclaration() {
		StringBuffer sb = new StringBuffer("");

		//Nombres, valores y onchange de los selects
		sb.append("var selname");
		sb.append(id);
		sb.append("=new Array(");
		sb.append(cmbnames.length);
		sb.append(");\n");

		sb.append("var selvalue");
		sb.append(id);
		sb.append("=new Array(");
		sb.append(cmbvalues.length);
		sb.append(");\n");

		for (int i = 0; i < cmbnames.length; i++) {
			sb.append("select").append(id).append(i).append("=").append(cmbnames[i]).append(";\n");
			sb.append("selname").append(id).append("[").append(i).append("]=\"").append("select").append(
				id).append(
				i).append(
				"\";\n");
			sb.append("func").append(id).append(i).append("=new Function();\n");
			sb.append("if(select").append(id).append(i).append(".onchange) {\n");
			sb.append("func").append(id).append(i).append("=select").append(id).append(i).append(
				".onchange;\n}\n");

			sb.append("function refill").append(id).append(i).append("() {\n");
			sb.append("select").append(id).append("=").append(cmbnames[i]).append(";\n");
			sb.append("\nrefill").append(id).append("(").append(i).append(", ").append("select").append(
				id).append(
				".selectedIndex); ");
			sb.append(cmbonchange[i]!=null?cmbonchange[i]:"");				
			sb.append("\nfunc").append(id).append(i).append("();\n");
			sb.append("}\n");

			sb.append("select");
			sb.append(id);
			sb.append(i);
			sb.append(".onchange=refill");
			sb.append(id);
			sb.append(i);
			sb.append(";\n");

			sb.append("selvalue");
			sb.append(id);
			sb.append("[");
			sb.append(i);
			sb.append("]=\"");
			sb.append(cmbvalues[i]);
			sb.append("\";\n");
		}

		return sb.toString();
	}

	private String generateTree(TreeItem ddl) {
		StringBuffer sb = new StringBuffer("");
		sb.append("\nvar ddl");
		sb.append(id);
		sb.append("=new TreeItem(\"ROOT\", \"ROOT\");\n");

		//Recorre el arbol de 韙ems para generar el c骴igo.
		generate(sb, ddl, "ddl" + id);

		return sb.toString();
	}

	private void generate(StringBuffer sb, TreeItem ddl, String parent) {
		Iterator it = ddl.rel.iterator();
		int i = 0;
		while (it.hasNext()) {
			TreeItem ddlaux = (TreeItem) it.next();
			String newParent = parent + "_" + i;
			sb.append(newParent);
			sb.append("=");
			sb.append(parent);
			sb.append(".add(\"");
			//MM: Reemplazo ' por " para evitar errores de JScript.
			sb.append(ddlaux.getDescrip().replace('"', '\''));
			sb.append("\", \"");
			sb.append(ddlaux.getId());
			sb.append("\");\n");
			i++;
			generate(sb, ddlaux, newParent);
		}
	}

	private String generateRefillFunction() {
		StringBuffer sb = new StringBuffer("");
		sb.append("function refill");
		sb.append(id);
		sb.append("(sel, index) { selCount=selname");
		sb.append(id);
		sb.append(".length;\n");
		sb.append("if(sel==-1) selCount-- ;\n");
		sb.append("for(selidx=sel;selidx<selCount;selidx++) {\n");
		sb.append("level=selidx+1;select=eval(selname");
		sb.append(id);
		sb.append("[level]);\nif(select) {\n");
		sb.append("saux=\"ddl");
		sb.append(id);
		sb.append("\";\n");
		sb.append("for(i=0;i<level;i++) { saux=saux + \".rel\"; if(i<level) { saux=saux + \"[\" + selname");
		sb.append(id);
		sb.append("[i] + \".selectedIndex]\";} else {saux=saux + \"[index]\";}}\n");
		sb.append("aux=eval(saux);	for (m=select.options.length-1;m>=0;m--) {select.options[m]=null;}\n");
		sb.append(
			"indice=0;\nfor (i=0;i<aux.rel.length;i++){	select.options[i]=new Option(aux.rel[i].descrip, aux.rel[i].id);\nif(selvalue");
		sb.append(id);
		sb.append("[level] == aux.rel[i].id) indice=i;\n} select.options[indice].selected=true;} }}\n");

		return sb.toString();
	}

	public String generateObjects() {
		StringBuffer sb = new StringBuffer("");
		//verifica si en el request ya no apareci

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久久久久 | 日韩欧美一区二区不卡| 欧美国产综合一区二区| 国产成人午夜99999| 18涩涩午夜精品.www| 色网站国产精品| 日韩av中文在线观看| 久久久久久久免费视频了| 成人黄色大片在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 成人av免费在线| 欧美一区二区三区在| 精品一区二区三区影院在线午夜| 欧美日本乱大交xxxxx| 久久精品国产成人一区二区三区| 久久久五月婷婷| 欧美亚洲国产一卡| 国产在线不卡一区| 亚洲一级在线观看| 国产精品美女久久久久久久久久久 | 久久国产精品72免费观看| 久久综合九色综合欧美98| 制服丝袜国产精品| 亚洲一区二区综合| 久久精品人人做人人综合| 成人a区在线观看| 麻豆91精品91久久久的内涵| 亚洲国产高清aⅴ视频| 日韩区在线观看| 日韩欧美国产小视频| 国产乱码精品一区二区三区忘忧草 | 国产午夜精品一区二区三区四区| 东方aⅴ免费观看久久av| 91精品在线观看入口| 欧洲一区在线电影| 欧美又粗又大又爽| 91丨九色丨蝌蚪富婆spa| 亚洲超丰满肉感bbw| 国产夜色精品一区二区av| 99vv1com这只有精品| 国产 日韩 欧美大片| 国产福利一区在线观看| 成人精品视频一区| 在线观看中文字幕不卡| 在线日韩一区二区| 精品国产一区二区亚洲人成毛片 | 国产一区二区三区免费在线观看| 久久www免费人成看片高清| 国内外成人在线| 成人午夜视频福利| 欧美亚洲一区二区在线观看| 欧美一级高清片在线观看| 久久久久久电影| 一个色妞综合视频在线观看| 蜜桃久久av一区| 99精品欧美一区二区三区小说| 国产精品一二三区| 国产精品第13页| 国产无遮挡一区二区三区毛片日本| 久久精品欧美日韩精品| 亚洲精品欧美激情| 狠狠色狠狠色综合系列| 欧美无砖专区一中文字| 精品国产亚洲一区二区三区在线观看 | 国产一区二区三区| 色婷婷综合久久久中文一区二区| 一本久道中文字幕精品亚洲嫩| 91麻豆精品国产自产在线观看一区| 久久免费视频一区| 麻豆传媒一区二区三区| 欧美影院精品一区| 亚洲欧洲日韩av| 国内不卡的二区三区中文字幕 | 欧美精品三级在线观看| 亚洲免费观看高清| av一区二区三区四区| 精品少妇一区二区三区视频免付费| 综合久久久久久久| 成人黄色在线视频| 亚洲卡通动漫在线| 久久精品72免费观看| 国产亲近乱来精品视频| 国产精品一区二区你懂的| 国产亚洲一区二区三区| 麻豆高清免费国产一区| 日本一区二区三区国色天香 | 成人午夜激情视频| 亚洲特级片在线| 欧美色倩网站大全免费| 亚洲成人av电影| 久久久久久影视| 成人午夜在线播放| 蜜臀久久99精品久久久久宅男| 久久午夜国产精品| 在线免费亚洲电影| 99视频在线观看一区三区| 午夜精品久久久久久| 国产精品网站在线播放| 精品国产一区a| 欧美肥妇bbw| 欧美日韩一区二区三区不卡| 99久久综合国产精品| 欧美日韩一二三| 久草这里只有精品视频| 午夜精品久久久久久久久久久| 久久精品网站免费观看| 日韩欧美一级二级三级久久久| 色婷婷综合久久久久中文一区二区| 国产精品一区二区在线播放| 丝袜亚洲另类欧美综合| 亚洲一区二区三区在线播放| 中文av字幕一区| 中文字幕一区二区三区在线播放 | 欧美一级午夜免费电影| 欧美一级黄色大片| 久久综合资源网| 国产精品高潮呻吟| 亚洲一区二区三区国产| 亚洲国产日韩av| 蜜臀av国产精品久久久久| 久久精品国产成人一区二区三区| 久久99精品网久久| aaa亚洲精品一二三区| 色噜噜偷拍精品综合在线| 欧美美女bb生活片| 久久伊人中文字幕| 一区二区三区色| 国内欧美视频一区二区| av网站免费线看精品| 51精品国自产在线| 国产精品网站在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 欧美无砖专区一中文字| 精品少妇一区二区三区| 国产精品久久久久婷婷| 日本欧美一区二区| 日本道免费精品一区二区三区| 91精品国产手机| 亚洲黄一区二区三区| 国产美女精品在线| 日韩欧美一区在线观看| 亚洲综合色婷婷| 99久久久国产精品| 久久精品欧美一区二区三区麻豆| 亚洲二区在线观看| 欧美探花视频资源| 亚洲午夜免费福利视频| 日韩免费视频一区| 日韩视频免费观看高清完整版在线观看| 亚洲综合激情另类小说区| 午夜视频在线观看一区二区三区| 图片区小说区区亚洲影院| 亚洲成在线观看| 成人网在线播放| 色94色欧美sute亚洲线路二| 一本大道久久a久久综合| 91久久精品一区二区| 欧美色综合天天久久综合精品| 91精品国产综合久久久久久久久久 | 色婷婷亚洲综合| 日本大香伊一区二区三区| 精品国产sm最大网站| 欧美96一区二区免费视频| 91精品国产91久久久久久一区二区| 一区二区三区在线播放| 欧美日韩精品欧美日韩精品一| 天天操天天综合网| 欧美一三区三区四区免费在线看 | 国产精品久久久久永久免费观看| 成人av影视在线观看| 国产精品欧美综合在线| 99综合影院在线| 亚洲国产精品一区二区久久| 欧美视频一区二区| 国产伦精品一区二区三区视频青涩 | 青青草原综合久久大伊人精品优势| 日韩免费看的电影| 成人app在线观看| 亚洲成人av资源| 亚洲色欲色欲www| 日韩美女视频在线| 成人av电影在线观看| 日韩中文字幕区一区有砖一区 | 亚洲.国产.中文慕字在线| 精品久久久久久久久久久久久久久| 日本欧美肥老太交大片| 久久人人超碰精品| 欧美一区日韩一区| 91精品国产综合久久久久| 午夜av一区二区| 欧美午夜影院一区| 国产白丝精品91爽爽久久| 亚洲午夜在线视频| 亚洲少妇30p| 亚洲精品视频一区| 中文字幕一区二区在线播放| 精品国产乱码久久久久久闺蜜| 欧美私人免费视频| 欧美在线不卡一区| 欧美日精品一区视频|