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

Java之jsp自定义标签与通用分页案例 自定义jsp标签与通用分页的界面 阅读详情

项目里用到了一个多选下拉框,懒得在网上找,自己试着写了个简单的先用着,贴出来给学习的童鞋参考下。

 

这段JS控制各种事件(multiSelect.js)

/**
* created by yuandong
* created date 2012-5-23
* last updated date 2012-6-8
*/
jQuery(document).ready(function()
{
    //Click event of select div
    $('.multiSelectDiv').click(function(e){
    	
    	var text = $(this).find('input[type=text]');
    	var hidden = $(this).find('input[type=hidden]');
    	var target = $(e.target); 	
    	
    	//If target is text
    	if(target.attr('type') == text.attr('type'))
    	{
    	    //Hide other div
    	    $('.multiSelectDiv').find('div').each(function(){
	    	    $(this).animate({opacity: 'hide'}, 300);
	    	});
    	
	    	var div = $(this).find('div');
	    	var offSet = text.offset();
	    	var left = offSet.left;
	    	var top = offSet.top;
	    	
	    	if(div.is(":visible"))
	    	{
	    	    div.animate({opacity: 'hide'}, 300);
	    	}
	    	else
	    	{
	    	   div.css({"top":top+20,"left":left}).animate({opacity:'show'}, 300);
	    	}
    	}
    	//If target is checkbox
    	else if(target.attr('type') == 'checkbox')
    	{
    	    var textVal = '';
    	    var hiddenVal = '';
    	    var selectDivObj = $(this);
    	    var curCheckboxCount = 0;
            var selectedCheckboxCount = 0;
    	    //Get value by selected checkbox
	    	$(this).find('input[type=checkbox][class!=selectAll]').each(function(){
	    	    
	    		if($(this).is(':checked'))
	    		{
	    		    textVal += $(this).parent().parent().find('span').text() + ',';
	    		    hiddenVal += $(this).val() + ',';
	    		    selectedCheckboxCount++;
	    		}
	    		//When exist checkbox not select,set 'select all' to not select 
	    		else
	    		{
	    		    selectDivObj.find('input[type=checkbox][class=selectAll]').attr('checked','');
	    		}
	    		curCheckboxCount++;
	    	});
	    	
	    	if(curCheckboxCount>0 && selectedCheckboxCount>0 && curCheckboxCount==selectedCheckboxCount)
	        {
	           selectDivObj.find('input[type=checkbox][class=selectAll]').attr('checked','true');
	        }
	    	
	    	text.val(textVal.substring(0,textVal.length-1));
	    	hidden.val(hiddenVal.substring(0,hiddenVal.length-1));
    	}
    	//If target is clearImg, clear text,hidden,and checkbox value
    	else if($(this).find('img').length>0  && target.attr('name') == 'clearImg')
    	{
    	    text.val('');
	    	hidden.val('');
	    	$(this).find('input[type=checkbox]').each(function(){
		       if($(this).is(":checked"))
		       {
		    	 $(this).attr("checked",'');
		       }
	    	});
    	}
    	//If target is selectImg, show select
    	else if($(this).find('img').length>0  && target.attr('name') == 'selectImg')
    	{
    	    text.click();
    	}
    });
    
    //Hide div when user click other area
    $('html').click(function(e){
    	//If not multi select div area, return 
    	if($(e.target).isChildAndSelfOf (".multiSelectDiv"))
    	{
    	    return;
    	}
    	//Else hide select div
    	else
    	{
	    	$('.multiSelectDiv').find('div').each(function(){
	    	    $(this).animate({opacity: 'hide'}, 300);
	    	});
    	}
    }); 
    
    //Select all items
    $('.selectAll').click(function(e){
        var all = $(this);
        all.parent().parent().parent().find('input[type=checkbox]').each(function(){
           if(all.is(":checked"))
           {
               $(this).attr("checked",'true');
           }
           else
           {
               $(this).attr("checked",'');
           }
        });
    });   
    
    //Check current elements 
    jQuery.fn.isChildAndSelfOf = function(b){ 
        return (this.closest(b).length > 0); 
    };
    
    //On init
    initMultiSelect();
    
});

//Init select
function initMultiSelect()
{
   $('.multiSelectDiv').each(function(){
       var hiddenVal = $(this).find('input[type=hidden]').val();
       var textVal = '';
       var curCheckboxCount = 0;
       var selectedCheckboxCount = 0;
       var selectDivObj = $(this);
       //Select checkBox and set up input value after do query
       if(hiddenVal != '')
       {
	       $(this).find('input[type=checkbox][class!=selectAll]').each(function(){
	    		if(hiddenVal.indexOf($(this).val()) != -1)
	    		{
	    		    $(this).attr('checked',true);
	    		    textVal += $(this).parent().parent().find('span').text() + ',';
	    		    selectedCheckboxCount ++;
	    		}
	    		curCheckboxCount ++;
	       });
	       $(this).find('input[type=text]').val(textVal.substring(0,textVal.length-1));
	       //If checkbox count of current select is equals selected checkbox count,checked 'select all' 
	       if(curCheckboxCount>0 && selectedCheckboxCount>0 && curCheckboxCount==selectedCheckboxCount)
	       {
	           selectDivObj.find('input[type=checkbox][class=selectAll]').attr('checked','true');
	       }
       }
       
       //Set up the width of the select div
       var textWidth = 0;
       var img1Width = 0;
       var img2Width = 0;
       
       var textObj = $(this).find('input[type=text]');
       textWidth = textObj.width();
       
       var img1Obj = $(this).find('img');
       var tempImgObj = new Image(); 
       tempImgObj.src = img1Obj.attr( 'src');
       img1Width = tempImgObj.width;
       
       var img2Obj = img1Obj.next('img');
       tempImgObj.src = img2Obj.attr( 'src');
       img2Width = tempImgObj.width;
       
       $(this).width(textWidth + img1Width + img2Width + 10);
   });
}



标签类:

public class MultiSelectTaglib extends TagSupport 
{
    //下拉框数据,初始化下拉框的数据
    private List<LabelValueBean> items;
    //名称参数,传到后台的名称
    private String nameParams;
    //id参数,传到后台的id
    private String idParams;
    //当前id的值,主要用于查询后再次选中查询前的checkbox
    private String curIdVal;
    //样式,设置文本框样式
    private String textStyle;
    //是否只读(可选),设置文本框只读属性,默认只读
    private boolean readonly = true;
    //是否需要放大镜(可选),设置是否有放大镜图标,默认有放大镜图标
    private boolean hasSelectImg = true;
    //是否需要清空图标(可选),设置是否有清空图标,默认有清空图标
    private boolean hasClearImg = true;
    //下拉框高度(可选),设置高度后,超过高度后会显示下拉框
    private String selectHeight; 
    //下拉框宽度(可选),设置宽度后,超过高度后会显示下拉框,默认200px
    private String selectWidth;
    //是否需要全选功能(可选)
    private boolean hasAllSelector;
    
    //国际化用到的参数
    private final String SELECT_ALL = "select_all";
    private final String RESOURCE_NAME = "ssb_application_resource";
    /**
     * 重写doStartTag
     */
    public int doStartTag() 
    {        
        //得到资源文件
        Locale locale =  pageContext.getRequest().getLocale();
        ResourceBundle bundle = ResourceBundle.getBundle(RESOURCE_NAME, locale);
        Map<String, String> messages = new HashMap<String, String>();
        messages.put(SELECT_ALL, bundle.getString("multiSelect.selectAll"));
        
        JspWriter out = pageContext.getOut();
        
        if (out != null) 
        {
            try 
            {    
                out.print(getContentString(messages));
            } catch (IOException e) 
            {                
                PPMLog.debug("多选下拉框标签异常: " + e.getMessage());
            }
        }

        return SKIP_BODY;
    }
    
    /**
     * 拼接显示的多选框域
     * @return
     */
    private String getContentString(Map<String, String> messages)
    {
        //用户存放HTML内容串
        StringBuffer contentStr = new StringBuffer() ;
       //如果没设置宽度,默认200px
        if(StringHelper.isEmpty(selectWidth))
        {
            selectWidth = "200px";
        }
        
        //contentStr.append("<div class=\"multiSelectDiv\" style=\"width:" + selectWidth + "\">")
        contentStr.append("<div class=\"multiSelectDiv\">")
                  .append("<input type=\"text\" name=\"").append(nameParams).append("\"");
        //如果需要把文本框设置为只读
        if(readonly)
        {
            contentStr.append("readonly=\"readonly\"");
        }
        //文本框默认样式
        String textDefStyle = "width:200px";
        contentStr.append(" style=\"").append(StringHelper.isEmpty(textStyle) ? textDefStyle : textStyle).append("\"/>")
                  .append("<input type=\"hidden\" name=\"").append(idParams).append("\" value=\"" + curIdVal + "\"/>");
        
        HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
        if(hasSelectImg)
        {
            String imgPath = request.getContextPath() + "/images/projectinfo/search.gif";
            contentStr.append("<img src=\"" + imgPath + "\" class=\"icon\" style=\"cursor:pointer\" name=\"selectImg\"/>");
        }
        //如果需要清除图标
        if(hasClearImg)
        {
            String imgPath = request.getContextPath() + "/images/clear.gif";
            
            contentStr.append("<img src=\"" + imgPath + "\" class=\"icon\" style=\"cursor:pointer\" name=\"clearImg\"/>");
        }
        
        /*
         * 如果以后要支持自定义其他样式,可以将这里的高度和宽度去掉, 直接自定义下拉框的样式,
         * 注意这里默认的"display:none;position: absolute;"是必需的样式,如果自定义里有同样属性定义,会直接覆盖同名属性的值.
         * 这里为了使用简便,暂时不支持
         String selectDefStyle = "display:none;position: absolute;";        
         contentStr.append(" style=\"").append(StringHelper.isEmpty(selectStyle) ? selectDefStyle+selectStyle : selectStyle).append("\"/>");
        */
        
        contentStr.append("<div style=\"display:none;position: absolute;"); 
        //如果设置了下拉框高度
        if(StringHelper.isNotEmpty(selectHeight))
        {
            contentStr.append("overflow:auto;height:" + selectHeight + ";");
        }
        
        contentStr.append("width:" + selectWidth + ";");
        contentStr.append("\">");
        contentStr.append("   <table  cellspacing=\"1\" class=\"tb_datalist\">");
        //如果list不为空,生成下拉列表
        if(items.isEmpty())
        {
            contentStr.append("<tr><td><td></tr>");
        }
        else
        {
            //如果需要全选功能
            if(hasAllSelector)
            {
                contentStr.append("<tr class=\"tr_title\">");
                contentStr.append("<td width=\"10%\">")
                .append("   <input class=\"selectAll\" value=\"\" type=\"checkbox\"/></td>");
                contentStr.append("<td width=\"90%\"><span>").append(messages.get(SELECT_ALL)).append("</span></td>");
                contentStr.append("</tr>");
            }
            //生成下拉列表
            for(LabelValueBean labelVal:items)
            {
                if(labelVal != null)
                {
                    contentStr.append("<tr>");
                    contentStr.append("<td width=\"10%\">")
                    .append("   <input type=\"checkbox\"  value=\"" + labelVal .getValue()+ "\"/></td>");
                    contentStr.append("<td width=\"90%\">").append("<span>" + labelVal.getLabel() + "</span></td>");
                    contentStr.append("</tr>");
                }
            }
        }
        contentStr.append("</table>");
        contentStr.append("</div>");
        contentStr.append("</div>");
                
        return contentStr.toString() ;
    }


    public void release() {
        super.release();
    }

    public void setNameParams(String nameParams)
    {
        this.nameParams = nameParams;
    }

    public void setStyle(String textStyle)
    {
        this.textStyle = textStyle;
    }

    public void setIdParams(String idParams)
    {
        this.idParams = idParams;
    }

    public void setCurIdVal(String curIdVal)
    {
        this.curIdVal = curIdVal;
    }

    public void setItems(List<LabelValueBean> items)
    {
        this.items = items;
    }

    public void setHasClearImg(Boolean hasClearImg)
    {
        this.hasClearImg = hasClearImg;
    }

    public void setSelectWidth(String selectWidth)
    {
        this.selectWidth = selectWidth;
    }

    public void setSelectHeight(String selectHeight)
    {
        this.selectHeight = selectHeight;
    }

    public void setHasAllSelector(boolean hasAllSelector)
    {
        this.hasAllSelector = hasAllSelector;
    }

    
}



tld文件(multiSelect.tld):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
	<tlibversion>1.0</tlibversion>
	<jspversion>1.1</jspversion>
	<shortname>multiSelectTaglib</shortname>
	<uri>/multiSelectTaglib</uri>
	
	<tag>
		<name>multiSelect</name>
		<tagclass>com.zte.ppm.baseutil.business.multiSelectTaglib.service.MultiSelectTaglib</tagclass>
		<bodycontent>JSP</bodycontent>
		<info>check if the user have the right access</info>
		<attribute>
			<name>items</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>curIdVal</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>idParams</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>nameParams</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>textStyle</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>readonly</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>hasSelectImg</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>hasClearImg</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>selectHeight</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>selectWidth</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>hasAllSelector</name>
			<required>false</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
	</tag>
</taglib>


 


使用时导入相应tld文件和JS文件以及jQuery包:

<%@ taglib uri="/WEB-INF/multiSelect.tld" prefix="mSelect"%>

<script type="text/javascript" src="${appRoot}/js/multiSelect.js"></script>

<script type="text/javascript" src="${appRoot}/js/jquery/jquery-1.4.2.min.js"></script>

使用方法:

<mSelect:multiSelect nameParams="con.unitName" items="${dpgReportForm.operateUnitList}"
                  curIdVal="${dpgReportForm.con.unitName}" idParams="con.unitName"
                  hasClearImg="true" selectHeight="200px" hasAllSelector="true"/>

 

效果:

 

如果要实现注释中说的自定义下拉框样式且将全选选择框置顶,可以另外定义两个div,一个放全选按钮,一个放下面的选择数据。

EasyUi中,关于动态生成多选下拉框 动态生成多选下拉框         在使用easyui的过程共中难免会遇到需要动态生成下拉框,也许是多个下拉框,也许是一个下拉框,说难不难,说简单不简单,反正我没有弄出来之前,觉得挺麻烦的.         下面附上代码,可用for循环动态生成多个下拉框!!!   有需求,评论联系我!!! 阅读详情

相关推荐

jsp/html 实现下拉复选框

包括相应的js,css文件,这些都是经过测试的。是没有问题的

Js实现下拉复选功能

Js实现下拉复选功能    推荐一个很好用的js实现下拉复选框的功能,纯js实现的,不需要引入样式表,使用起来方便快捷。    代码如下: &lt;html&gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt; &lt;title&gt;Js实现下拉复选功能&lt

Java小爬虫 7932

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

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

jsp中select多选框

JSP 首选最重要的就是js对前台页面的一些取值以及赋值了 JQUERY 前端常用的一些时间函数 (1)onclick:点击时触发的事件 (按钮最多) (2)onblur:失去焦点时触发的事件 (文本框比较多) (3)onchange:当元素内容改变时触发 (select下拉框用的比较多) 普通取\赋值 ========== 赋值:$("#name").val(“姓名”); <in...

weixin_44031176的博客 6971

contextcapture多区块点云_多源点云数据融合的建筑物精细化建模

本文内容来源于《测绘通报》2020年第8期,审图号:GS(2020)3611号多源点云数据融合的建筑物精细化建模王树臻1, 郑国强1, 王光生1, 胡玉民2, 张德怀2, 亓伟3 ...

weixin_36301639的博客 1825

Windows11+VS2022驱动开发环境搭建实战:从零到编译(避坑指南)

本文详细介绍了在Windows11系统下使用VS2022搭建驱动开发环境的完整流程,包括版本匹配、工具安装、环境配置及常见问题解决。重点强调了WDK与系统版本的严格匹配,以及VS2022中驱动开发组件的正确配置方法,帮助开发者高效避坑并成功编译第一个驱动程序。

weixin_29251337的博客 527

jsp中自定义标签自动加载下拉框内容

第一步:在web项目下的web-inf的tlds目录下,新建一个配置文件,名字为relation.tld,内容如下: 自定义标签的前缀为relation(由short-name标签决定),属性有saveField(要保存到数据库的字段名),value(要被选中的数据值),disField(作为显示文本的字段,相当select标签的option之间的文本),tableName(下拉框要显示的表

qq_30908729的博客 1061

篮球比赛24秒计时器改造指南:用Multisim实现可调式倒计时系统

本文详细介绍了如何使用Multisim软件改造篮球比赛24秒计时器,实现可调式倒计时系统。从脉冲信号发生器到声光报警模块,提供了完整的电路设计方案和调试技巧,帮助开发者快速掌握数字电路设计的核心原理,提升体育电子设备开发效率。

wood5的博客 212

JSP自定义标签

JSP自定义标签一.标签语言的特点二.自定义jsp标签的开发和使用步骤  1.图解jsp自定义标签生命周期:  2.使用步骤  3.案例1:自定义out输出标签,if条件标签,foreach循环标签     1)自定out输出标签     2)自定If输出标签     3)自定foreach循环标签     4)页面测试效果 相信大家都用过jsp标签,典型的有c标签(jstl),当然还有jsp内...

weixin_44242009的博客 698

WSL2+Docker+Ollama:解锁Windows本地GPU加速运行DeepSeek-R1模型

本文详细介绍了在Windows系统上,通过WSL2、Docker和Ollama的组合方案,实现本地GPU加速运行DeepSeek-R1模型的全过程。该方案解决了Windows环境下Ollama默认无法调用NVIDIA显卡的痛点,通过配置Docker的GPU支持,强制将计算任务分配给GPU,从而显著提升文本生成速度与效率,为开发者提供了一个便捷的本地AI测试环境。

weixin_28452161的博客 358

别慌!Oracle MOS登录页面大变样?5分钟搞定新旧账号登录全流程

本文详细解析Oracle MOS登录页面改版后的新旧账号登录流程,帮助用户快速适应账号体系变革。针对传统MOS账号和OCI账号的不同应用场景,提供5分钟内完成无缝切换的实用指南,包括登录步骤、书签设置和密码管理策略,助力数据库管理用户高效访问Oracle技术支持资源。

weixin_30275415的博客 519

自定义select下拉框标签

/StringBuffer 不能像String那样直接通过赋值的方式完成对象实例化。//保存下拉框的value值。第六步 在WEB-INF或其子目录下导入或创建标签描述文件tld。//select没有标签体,又要输出内容,所要用流对象。//保存标签体的内容。//属性(获取单个所有的属性(包括私有的。//获取值,所有写一个根据对象取值。第二步 定义属性并提供get/set方法。//拼接,写一个拼接的方法。

2402_85275973的博客 704

硬盘dma读写过程

保护模式中,pci上的硬盘dma读写方法

481

复选框、下拉框实现多值回显

一、下拉框实现增加,保存在字段domain中,以","号分割。并将值回现在jsp中选中展示 效果: 例1: <script type="text/javascript"> $(function() { $('#userProjectRecommendedForm1').form({ url : '${c...

yangyi30的专栏 1371

DRAM刷新refresh相关知识归类-基础小知识(三)

RAM每一位数据都是通过芯片内的一个小电容充电(或低电平)存储的。但随着时间的推移,电容逐渐失去电荷。为避免丢失存储的数据,必须定期刷新以将电荷(如果存在)恢复到其原始级别。此刷新过程包括读取每个位的值,然后将其写回。在此“刷新”期间,内存被占用,无法执行加载或存储位等正常操作。知道了应该这么做,但怎么去做以及有什么办法更有效率去做,就是接下来要整理的内容。

Paul 安的博客 1万+

MobileFusion:基于结构重参数化的移动端红外可见光图像融合方法

MobileFusion提出了一种轻量化的红外与可见光图像融合框架,通过结构重参数化技术实现移动端实时部署。该方法包含可重参数多分支卷积(RepMBConv)、轻量化上下文感知注意力(LCAA)和重参数前馈网络(RepFFN)三大模块,在训练时保留多分支结构增强特征学习,推理时合并为单路算子提升效率。实验表明,MobileFusion在MSRS、FMB等数据集上实现了融合质量与推理速度的平衡,参数量仅4000,在边缘设备上也能高效运行,为资源受限场景提供了实用解决方案。代码已开源。

毕竟是Shy哥 138

JSP自定义标签【第二章】

书接上回:我们讲过了自定义test标签、自定义foreach标签、自定义数据标签。这一章节我讲讲自定义out/if标签(so easy)、自定义下拉框标签(满足所有应用场景)。案例:(最后统一配置mytag.tld文件)1、实践操作 out标签首先,创建一个out标签类OutTag.java并继承BodyTagSupport(标签助手类),定义一个out私有属性value,为Object类型。 2、if标签 if标签非常简单且基础,操作步骤同out标签类似,定义一个if私有属性test,为boo

明思齐的博客 659

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Struts2 自定义下拉框标签Tag

自定义标签主要包括三个步骤: 1、编写java类,继承TagSupport类; 2、创建tld文件,影射标签名和标签的java类; 3、jsp页面引入tld。 例子:自定义下拉框标签 如果页面上有下拉选择框,通常最好的解决方法是使用数据字典,因为有可能多个页面 使用同一个下拉框,便于后台统一维护。 自定义Tag类 import java.io.IOException; impo

itmyhome的专栏 4288

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

自定义标签——jsp标签增强

上次我们分享了自定义标签--jsp标签基础,今天分享的内容是自定义标签——jsp标签增强。 1、定义助手类ForeachTag 2、定义tld文件 3、 使用自定义的foreach标签 运行结果如下: 1、定义助手类SelectTag 2、定义tld文件 3、使用 运行结果如下: 1、定义助手类 2、定义tld文件

qq_62331938的博客 452

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【JavaWeb探究】自定义JSP标签(三)

上篇博客我们简单的创建了一个自定义标签,这篇博客我们将继续介绍自定义JSP标签,不过难度升级,我们来定义一个稍难一点的自定义JSP标签,来做一个下拉框,查询父节点对应下面的子节点,我们以查询一个省份下对应的城市为例。      还是按照之前的步骤,首先我们先创建一个处理该标签的类。 package com.csds.area; import java.io.IOException;

不忘初心 942

JSP自定义标签02

jsp自定义标签02前言jsp自定义标签(ForEach标签、Select标签)实战演示最终效果注意要点总结 前言 嘿,由于我的上一篇博客关于jsp自定义标签已经做好一系列的详细解释了,所以这次博客就来和大家分享一下forEach遍历标签以及seleect下拉框标签的实现过程! jsp自定义标签(ForEach标签、Select标签)实战演示 实战演示一之ForEach标签: 1、 首先新建项目后,在src目录下创建一个放置标签的包,就像这样,因为可能会需要用到c标签做对比,所以可以先导入c标签的jar

月亮投递员的博客 345

自定义jsp标签案例

自定义jsp标签

阳某的博客 490

JSP自定义标签 下拉框select

在工程中新建tag文件即可: <%@ tag language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/...

chilongkun8891的博客 587

Java中使用Select标签绑定下拉框以及通过选中下拉框内容动态回填

Java中绑定下拉框以及通过选中下拉框内容动态回填 MySql里数据库里的表格 思路:选择下拉框内容,动态回填旁边的表格数据: 效果图: 注意看路径,别把路径写错了; JDBC的配置前面的博客里有说到,在这里就不写了。 下面是代码部分: 主要组成部分:一个servlet、一个Jsp、一个po类、一个dao、一个dao实现类、一个service、一个service...

weixin_42271651的博客 5776
上一篇: Hibernate的merge()方法
下一篇: dhtmlxtree中文API说明书
fkeai
博客等级 码龄17年 1粉丝 3原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值