JSP自定义标签(三) 多选控件(3)

JSP 自定义标签 自定义标签是一种特殊类型的 Java 类,它扩展了 JSP 标准标签库 (JSTL) 的功能。通过自定义标签,开发者可以将重复的代码封装成标签,然后在 JSP 页面中重复使用。简单标签(Simple Tag):这种标签不需要处理请求,主要用来处理逻辑操作,并返回字符串。标签文件(Tag File):这种标签通常包含一个 HTML 页面,用于显示标签处理后的结果。自定义标签的核心是 TagHandler 类,它实现了 SimpleTagHandler 接口。@Override// 处理逻辑try { 阅读详情

JSP自定义标签(三)多选控件 前两篇博文中实现的控件不能实现多选,为了补充该功能对JS进行了调整:

修改后的效果如下图:


multiselector.js:

// author: HHB  	
function showMulti(parentId, name, id, value) {
	var multi = new MultiSelector();
	multi.create(parentId, name, id);
	multi.multiSelector(id);
	var str = "[{text:'zs1',value:'1'},{text:'zs2',value:'1'},{text:'zs3',value:'1',selected:'true'},{text:'zs4',value:'1',selected:'true'}]";
	var obj = eval("(" + (value?value:'-1') + ")");
	multi.initItem(obj);
	// alert(multi);
}

MultiSelector = function() {
	this.forSelec = null;
	this.selected = null;
	this.selectedItemL = new Array();
	this.selectedItemR = new Array();
	this.valueObj = null;
	this.selectBtn=null;
	this.cancelBtn=null;
	var forSele_="forSele_";
	var selected_="selected_";
	var valueObj_="valueObj_";
	var selectBtn_="selectBtn_";
	var cancelBtn_="cancelBtn_";
	var parent_="multiParent_";
	var _this=this;
	//根据ID获取多选控件对象
	MultiSelector.prototype.multiSelector=function(id){
		var _this=this;
		this.forSelec=document.getElementById(forSele_+id);
		this.selected=document.getElementById(selected_+id);
		this.valueObj=document.getElementById(id);
		this.selectBtn=document.getElementById(selectBtn_+id);
		this.cancelBtn=document.getElementById(cancelBtn_+id);
		this.selectedItemL = new Array();
		this.selectedItemR = new Array();
		var nodes = this.forSelec.childNodes;
		var node=null;
		for (index = 0; index < nodes.length; index++) {
			node=nodes[index];
			if(node&&node.getAttribute("checked")=="true")
			{
				this.selectedItemL.push(node);
			}
		}
		nodes=this.selected.childNodes;
		for (index = 0; index < nodes.length; index++) {
			node=nodes[index];
			if(node&&node.getAttribute("checked")=="true")
			{
				this.selectedItemR.push(node);
			}
		}
		MultiSelector.removeEvent(_this.selectBtn,'click',function() {
			MultiSelector.itemOnSelect(_this);
		});
		MultiSelector.addEvent(_this.selectBtn,'click',function() {
			MultiSelector.itemOnSelect(_this);
		});
		MultiSelector.removeEvent(_this.cancelBtn,'click',function() {
			MultiSelector.itemOnCancel(_this);
		});
		MultiSelector.addEvent(_this.cancelBtn,'click',function() {
			MultiSelector.itemOnCancel(_this);
		});
		//MultiSelector.clearChildren(document.getElementById(parent_+id));
		//this.create()
	};
	
	//加载本地数据
	MultiSelector.prototype.load=function(data,textField,valueField){
		if(this.forSelec&&this.selected)
		{
			this.clear();
			this.initItem(data,textField,valueField);
		}
	};
	
	MultiSelector.addEvent = function(el, evname, func) {
		if (el.attachEvent) { // IE
			el.attachEvent("on" + evname, func);
		} else if (el.addEventListener) { // Gecko / W3C
			el.addEventListener(evname, func, true);
		} else { // Opera (or old browsers)
			el["on" + evname] = func;
		}
	};
	MultiSelector.removeEvent=function(el, evname, func) {
		if (el.detachEvent) { // IE
			el.detachEvent("on" + evname, func);
		} else if (el.removeEventListener) { // Gecko / W3C
			el.removeEventListener(evname, func, true);
		} else { // Opera (or old browsers)
			el["on" + evname] = null;
		}
	};
	MultiSelector.clearChildren=function(parent)
	{
		while (parent.firstChild) {
		      var oldNode = parent.removeChild(parent.firstChild);
		      oldNode = null;
			}
	};
	//清空多选控件的选择列表
	MultiSelector.prototype.clear=function()
	{
		var children=null;
		if(this.forSelec)
		{
			MultiSelector.clearChildren(this.forSelec);
		}
		if(this.selected)
		{
			MultiSelector.clearChildren(this.selected);
		}
	};
	//初始化创建元素
	MultiSelector.createElement = function(type, parent) {
		var el = null;
		if (document.createElementNS) {
			el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
		} else {
			el = document.createElement(type);
		}
		if (typeof parent != "undefined") {
			parent.appendChild(el);
		}
		return el;
	};
	
	//初始创建控件元素
	MultiSelector.prototype.create = function(par, name, id) {
		var _this=this;
		var parent = document.getElementById(par);
		var tempTable = MultiSelector.createElement("table");
		parent.appendChild(tempTable);
		var tbody = MultiSelector.createElement("tbody");
		tempTable.appendChild(tbody);
		var tmpTr = MultiSelector.createElement("tr");
		tmpTr.style.verticalAlign = 'middle';
		tbody.appendChild(tmpTr);

		// 供选择列表
		var forSeletd = MultiSelector.createElement("td");
		forSeletd.style.width = '150px';
		forSeletd.style.height = '200px';
		var forSeleDiv = MultiSelector.createElement("div");
		forSeleDiv.id=forSele_+id;
		forSeleDiv.style.width = '150px';
		forSeleDiv.style.height = '200px';
		forSeleDiv.style.border = '2px solid #C9D7F1';
		forSeleDiv.style.overflow= 'auto';
		forSeleDiv.setAttribute("stype", "L");
		this.forSelec = forSeleDiv;
		forSeletd.appendChild(forSeleDiv);
		tmpTr.appendChild(forSeletd);

		// 按钮列表
		var btntd = MultiSelector.createElement("td");
		btntd.style.width = '80px';
		btntd.style.height = '200px';
		var btnDiv = MultiSelector.createElement("div");
		btnDiv.style.width = '80px';
		btnDiv.style.height = '100px';
		// btnDiv.style.border='2px solid #C9D7F1';
		btnDiv.style.floatStyle = 'left';
		btntd.appendChild(btnDiv);
		tmpTr.appendChild(btntd);

		// 选择按钮
		var selectBtn = MultiSelector.createElement("div");
		selectBtn.id=selectBtn_+id;
		selectBtn.style.cursor = 'pointer';
		selectBtn.style.width = '70px';
		selectBtn.style.height = '20px';
		selectBtn.style.border = "#7b9ebd 1px solid";
		selectBtn.style.backgroundColor = "#EBE9ED";
		selectBtn.style.fontFamily = "Verdana,Arial,Helvetica,sans-serif";
		selectBtn.innerHTML = "选择 >>";
		selectBtn.style.marginLeft = 'auto';
		selectBtn.style.marginRight = 'auto';
		btnDiv.appendChild(selectBtn);
		this.selectBtn=selectBtn;
		/*
		MultiSelector.removeEvent(this.selectBtn,'click',MultiSelector.itemOnSelect);
		MultiSelector.addEvent(this.selectBtn, "click", function() {
			MultiSelector.itemOnSelect();
		});
		*/
		// 取消按钮
		var cancelBtn = MultiSelector.createElement("div");
		cancelBtn.id=cancelBtn_+id;
		cancelBtn.style.cursor = 'pointer';
		cancelBtn.style.width = '70px';
		cancelBtn.style.height = '20px';
		// cancelBtn.style.border="1px #000000 solid";
		cancelBtn.style.border = "#7b9ebd 1px solid";
		cancelBtn.style.backgroundColor = "#EBE9ED";
		cancelBtn.style.fontFamily = "Verdana,Arial,Helvetica,sans-serif";
		cancelBtn.innerHTML = "<< 取消 ";
		cancelBtn.style.marginLeft = 'auto';
		cancelBtn.style.marginRight = 'auto';
		cancelBtn.style.marginTop = '30px';
		cancelBtn.style.color = "#000000";
		btnDiv.appendChild(cancelBtn);
		this.cancelBtn=cancelBtn;
		/*
		MultiSelector.removeEvent(cancelBtn,'click',MultiSelector.itemOnCancel);
		MultiSelector.addEvent(cancelBtn, "click", function(event) {
			alert(_this.selectedItemR.length);
			MultiSelector.itemOnCancel(_this);
		});
		*/
		// 保存值
		var valueHid = MultiSelector.createElement("input");
		//valueHid.id=valueObj_+id;
		valueHid.type = "hidden";
		valueHid.name = name;
		valueHid.id = id;
		this.valueObj = valueHid;
		btnDiv.appendChild(valueHid);

		// 已选择项列表
		var selectedtd = MultiSelector.createElement("td");
		selectedtd.style.width = '150px';
		selectedtd.style.height = '200px';
		var selectedDiv = MultiSelector.createElement("div");
		selectedDiv.id=selected_+id;
		selectedDiv.style.width = '150px';
		selectedDiv.style.height = '200px';
		selectedDiv.style.border = '2px solid #C9D7F1';
		selectedDiv.style.floatStyle = 'left';
		selectedDiv.style.overflow= 'auto';
		selectedDiv.setAttribute("stype", "R");
		this.selected = selectedDiv;
		selectedtd.appendChild(selectedDiv);
		tmpTr.appendChild(selectedtd);
	};
	MultiSelector.prototype.initItem = function(jsonValue,textField,valueField) {
		//alert(jsonValue[0].text);
		//var objs = eval("(" + jsonValue + ")");
		var objs=jsonValue;
		var objTmp = null;
		for (objIndex = 0; objIndex < objs.length; objIndex++) {
			objTmp = objs[objIndex];
			this.createItem(objTmp,textField,valueField);
		}
		this.valueObj.value = this.getValue();
	};
	MultiSelector.prototype.createItem = function(valueObj,textField,valueField) {
		if (!valueObj) {
			return;
		}
		var itemDiv = null;
		itemDiv = MultiSelector.createElement("div");
		if(valueField)
		{
			itemDiv.setAttribute('key', valueObj[valueField]);
		}else{
			itemDiv.setAttribute('key', valueObj.value);
		}
		itemDiv.setAttribute('checked', "false");
		itemDiv.style.width = '100%';
		itemDiv.style.cursor = 'pointer';
		if(textField)
		{
			itemDiv.innerHTML = valueObj[textField];
		}
		else
		{
			itemDiv.innerHTML = valueObj.text;
		}
		itemDiv.onblur = MultiSelector.itemOnBlur;
		var _this = this;
		MultiSelector.addEvent(itemDiv, "click", function(event) {
			var srcObj = null;
			if (event && event.srcElement) {
				srcObj = event.srcElement;
			} else {
				srcObj = this;
			}
			MultiSelector.itemOnClick(srcObj, _this);
		});
		// MultiSelector.addEvent(itemDiv,"blur",MultiSelector.itemOnBlur);
		if (valueObj.selected == "true") {
			this.selected.appendChild(itemDiv);
		} else {
			this.forSelec.appendChild(itemDiv);
		}
	};
	MultiSelector.prototype.moveItem = function(direction) {
		if (direction && direction === true) {
			if (this.selectedItemL&&this.selectedItemL.length>0) {
				for(moveItem_index_L=0;moveItem_index_L<this.selectedItemL.length;moveItem_index_L++)
				{
					this.forSelec.removeChild(this.selectedItemL[moveItem_index_L]);
					this.selected.appendChild(this.selectedItemL[moveItem_index_L]);
					this.selectedItemR.push(this.selectedItemL[moveItem_index_L]);
				}
				this.selectedItemL.splice(0, this.selectedItemL.length);
				//this.forSelec.removeChild(this.selectedItemL);
				//this.selected.appendChild(this.selectedItemL);
				//this.selectedItemR = this.selectedItemL;
				//this.selectedItemL = null;
				//this.selectedItemR.click();
				for(moveItem_index_R=0;moveItem_index_R<this.selectedItemR.length;moveItem_index_R++)
				{
					//this.selectedItemR[moveItem_index_R].click();
				}
			}
		} else {
			if (this.selectedItemR&&this.selectedItemR.length>0) {
				
				for(moveItem_index_R=0;moveItem_index_R<this.selectedItemR.length;moveItem_index_R++)
				{
					this.selected.removeChild(this.selectedItemR[moveItem_index_R]);
					this.forSelec.appendChild(this.selectedItemR[moveItem_index_R]);
					this.selectedItemL.push(this.selectedItemR[moveItem_index_R]);
				}
				//this.selected.removeChild(this.selectedItemR);
				//this.forSelec.appendChild(this.selectedItemR);
				//this.selectedItemL = this.selectedItemR;
				//this.selectedItemR = null;
				this.selectedItemR.splice(0, this.selectedItemR.length);
				//this.selectedItemL.click();
			}
		}
		this.valueObj.value = this.getValue();
	};
	MultiSelector.prototype.getValue = function() {
		var valueStr = "";
		var valueObjs = this.selected.childNodes;
		var tmpItem = null;
		for (valueIndex = 0; valueIndex < valueObjs.length; valueIndex++) {
			tmpItem = valueObjs[valueIndex];
			valueStr = valueStr + tmpItem.getAttribute("key") + ",";
		}
		return valueStr;
	};
	MultiSelector.itemOnClick = function(srcObj, obj) {
		var nodes = srcObj.parentNode.childNodes;
		/*
		for (index = 0; index < nodes.length; index++) {
			nodes[index].style.backgroundColor = "#ffffff";
		}
		*/
		checkedStatus=srcObj.getAttribute("checked");
		if("true"==checkedStatus)
		{
			srcObj.setAttribute("checked","false");
			srcObj.style.backgroundColor = "#ffffff";
		}
		else
		{
			srcObj.setAttribute("checked","true");
			srcObj.style.backgroundColor = "#E0EEE0";
			
			if (srcObj.parentNode == obj.forSelec) {
				obj.selectedItemL.push(srcObj);
			}
			if (srcObj.parentNode == obj.selected) {
				obj.selectedItemR.push(srcObj);
			}
		}
		/*
		if (srcObj.parentNode == obj.forSelec) {
			obj.selectedItemL = srcObj;
		}
		if (srcObj.parentNode == obj.selected) {
			obj.selectedItemR = srcObj;
		}
		*/
	};
	MultiSelector.itemOnBlur = function() {
		this.style.backgroundColor = "#ffffff";
	};
	MultiSelector.itemOnSelect = function(obj) {
		obj.moveItem(true);
	};
	MultiSelector.itemOnCancel = function(obj) {
		obj.moveItem(false);
	};
};


jsp实现多选列表框 本资源是用js与html控制的代码,用来实现列表框数据可以多选 立即下载

相关推荐

jsp实现下拉选择框多种源码

jsp实现下拉框源码,适合新手作为学习参考,不是很好但适用

JS 实现 Selector 多选插件 mulitselector

由于最近开发项目,想使用弹出式窗口复选功能,想增加web2.0的特点。但是在网上找了很多js弹出窗口复选的例子, 感觉都不是很理想,也看了很多老外开发的例子,感觉也不是理想的弹出窗口,并且窗口页面也不是很好看,我看了一下ch所以我决定自己写一个,并且开源出来,服务于大家。   我的开发过程如下: 1. 我上chinahr看了一下,他们做的弹出式窗口,感觉效果和理想。于是看了一下他们js代码...

北京堵车王的专栏 818

在jsp页面中的日期选择框

在jsp页面中的日期选择框

jsp获取多选框组件的值

jsp获取多选框组件的值 1.首先写一个带有多选框的前台页 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Trans...

baobian3205的博客 1377

激光雷达测距方式全解析:ToF、三角测距和FMCW到底怎么选?

本文深度解析激光雷达三种主流测距方式(ToF、三角测距和FMCW)的技术原理、环境适应性和成本模型,提供场景化选型决策指南。通过对比各技术在精度、抗干扰能力和维护成本等方面的表现,帮助工程师在自动驾驶、工业检测和消费电子等领域做出最优选择。

qqq44的博客 721

开源libmodbus编译为32位和64位动态库

libmodbus 是支持Linux,Mac OS X,window 的一个开源库,支持modbus TCP和RTU 两种模式。

lemontree1945的博客 1923

jsp select multiple

//File: index.html&lt;HTML&gt;    &lt;HEAD&gt;        &lt;TITLE&gt;Submitting Multiple Selection Select Controls&lt;/TITLE&gt;    &lt;/HEAD&gt;     &lt;BODY&gt;        &lt;H1&gt;Submitting Multiple Se

weixin_33798152的博客 631

3台虚拟机部署Doris详细文档(含校验步骤)

摘要:本文详细介绍了Apache Doris在3台虚拟机上的集群部署方案。采用1主FE+1从FE+1观察者FE+3BE的混合部署模式,确保元数据高可用性。硬件配置建议测试环境4核16GB内存,生产环境8核64GB内存。部署步骤包括系统环境配置(关闭防火墙、内核参数优化)、FE/BE节点配置启动、集群初始化验证等。重点配置了IP白名单(172.30.0.115)和数据目录(/data/doris)。通过MySQL客户端和WebUI可监控集群状态,实现千万级数据的实时分析能力,后续可通过增加BE节点线性扩展。

weixin_41026747的博客 935

JSP自定义标签实现多选下拉框

项目里用到了一个多选下拉框,懒得在网上找,自己试着写了个简单的先用着,贴出来给学习的童鞋参考下。   这段JS控制各种事件(multiSelect.js) /** * created by yuandong * created date 2012-5-23 * last updated date 2012-6-8 */ jQuery(document).ready(function

fkeai的专栏 9320

群晖NAS下docker安装MySql

本文将一步一步讲解如何在群晖NAS的docker中启用一个MySQL容器 , 算是初学者对问题解决的一个记录.

qq_46375248的博客 5978

obdumper和obloader迁移OceanBase业务库(一):实施手册

⭐️ 要求导出一致性数据时,建议在导出数据前,手动触发一次合并,在合并成功后再重新导出数据。:统计业务数据库下的所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…:检查业务数据库下的所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…:统计单个模式下所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…如果单张表的数据量太大,会导出为多个文件,文件命名会加上数字后缀。该过程会导出所有表的定义、以及定义在表上的索引定义。如果有多种数据库对象,会导出到不同的子路径下。

Sebastien23的博客 1025

JSP自定义标签(三) 多选控件

一、效果图 二、标签定义代码 package com.swcares.util.tags; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.

Core_Star的专栏 3212

第四天 Labview交互也很轻松(4.1 DAQ数据采集)

LabVIEW DAQ数据采集有很大的优势,NI提供了超过5千万条I/O通道,支持多种主流总线(如USB、PCI、PCIe、PXI等),并为所有这些设备提供统一的编程接口,实现软硬件的无缝集成。LabVIEW包含全套范例,覆盖各类应用,用户无需从头创建整个数据采集系统,可以快速启动并执行这些范例程序。所有NI DAQ硬件都采用NI-DAQmx驱动程序,支持多种编程语言,并包含了这些编程语言的示例代码,使得与NI硬件的通信变得更加便捷。

weixin_38637405的博客 2618

JSP自定义标签(三)自定义日期选择标签

这篇博客,我想利用前面两篇JSP标签的内容实现一个可以选择日期的自定义标签。这篇博客会用到WdatePicker.js插件,这是一个日期选择器。本篇博客主要是想利用前面两篇博客的内容实现一些能用上的自定义标签。关于WdatePicker.js的使用不会多说,重点还是自定义标签。 首先看一下最终的结果是个什么样子: 通过自定义标签生成一个输入框,单击这个输入框则会调用WdatePicker.j

zhonglin_li的博客 3157

【Matlab光伏功率预测】基于GRU门控循环单元的光伏功率时间序列预测(附MATLAB代码)

【Matlab光伏功率预测】基于GRU门控循环单元的光伏功率时间序列预测(附MATLAB代码)

k8291121的博客 1100

100天精通Python(基础篇)——第20天:pip命令大全

pip升级命令:python -m pip install --upgrade pip pip install name //这里的name是要安装的第三方库名 pip install name -i http://mirrors.aliyun.com/pypi/simple/ 国内镜像源 阿里云:http://mirrors.aliyun.com/pypi/simple/ (推荐使用) 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple 豆瓣:http:/

努力让自己发光,对的人才能迎着光而来 18万+

JSP自定义tag控件标签

JSP支持自定tag的方法,那就是直接讲JSP代码保存成*.tag或者*.tagx的标签定义文件。tag和tagx文件不仅支持经典jsp代码,各种标签模版代码,还支持xml样式的jsp指令代码。 按照约定,tag和tagx文件需要放置在WEB-INF/tags目录下。 下面是一个简单的例子,使用自定义标签创建一个Button: 1 <%@ tag language="j...

weixin_30564785的博客 369

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JSP自定义标签(三) 多选控件(2)

三、JS代码:multiSelector.js // author: HHB       function showMulti(parentId, name, id, value) {     var multi = new MultiSelector();     multi.create(parentId, name, id);     var str = "[{text:'z

Core_Star的专栏 2104

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jsp的自定义标签 控制jsp内容显示

引入方式示例 <%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %> tld文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP ...

dengkuituo0680的博客 137

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jsp的三种自定义标签 写法示例

jsp的三种自定义标签 写法示例 自定义标签可以大大方便我们的页面控件编写,并且可以实现很多统一的管理。 0、首先需要引入支持自定义标签的jar包,有两种方式, 一个是直接在maven里面引入依赖: <dependency> <groupId>javax.servlet.jsp</groupId> ...

s_x123456的博客 196

java自定义标签 实例_jsp的三种自定义标签 写法示例

自定义标签可以大大方便我们的页面控件编写,并且可以实现很多统一的管理。0、首先需要引入支持自定义标签的jar包,有两种方式,一个是直接在maven里面引入依赖:javax.servlet.jspjavax.servlet.jsp-api2.3.1另一个是直接用你Tomcat自带的jsp-api两种方式取其中一种即可。1、通过tld文件,自定义方法标签tld的这种用法,让我们可以在jsp里直接使用类...

weixin_39685392的博客 285

java jsp 自定义标签_JSP自定义标签开发入门

JSP自定义标签开发入门一般情况下开发jsp自定义标签需要引用以下两个包import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.*;首先我们需要大致了解开发自定义标签所涉及到的接口与类的层次结构(其中SimpleTag接口与SimpleTagSupport类是JSP2.0中新引入的)。目标1:自定义一个用表格显示用户信息的简单标签效果图...

weixin_36073959的博客 221

JSP GridView --使用自定义标签实现ASP.NET的控件

JSP用自定义标签实现ASP.net的gridview、datasource组件   第一部分:使用说明          使用过ASP.NET的人都知道,gridview控件功能很强大,使用很方便,提高了开发效率、而且表现逻辑和数据分离,只需提供一个DataTable对象(一个表格的数据对象)。甚至,只要引入datasource控件,可以不用代码也可以实现对数据库的查看、删除、修改等功能。

xyjikl 1193

自定义JSP标签

 一个项目中会在多个JSP界面中使用下拉框,日期控件,分页控件。若能将此类控件抽象出来,做成一个JspTag的话,那使用起来就方便多了。同时便于JSP的阅读,更主要的是方便了项目的管理与维护。下面以行业下拉框控件为例介绍自定义JspTag,尤其注意红色标注处,从对应关系可以找到运用规律:首先建立/WEB-INF/tags/my-tag.tld描述文件:

§封Ja葬va§ 799
上一篇: JAVA+FlexPaper+OpenOffice+SWFTools文档预览
下一篇: easyUI datagrid 数据加载时判断是否默认勾选checkbox
carroll0911
博客等级 码龄17年 27粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值