如何实现自定义标签

简单介绍一下自定义标签的创建方法,很简单也很实用。我这里是创建了一个select自定义标签,使用这个标签会在jsp页面上自动呈现一个select下拉框。如下图所示:


一、配置tid标签文件

这个配置文件一般会放在web-inf文件夹下,因为在web.xml文件中需要配置这个配置文件的路径,所以习惯放在这里。直接贴代码:

<?xml version="1.0" encoding="UTF-8" ?>  
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/jsee/web-jsptagLibrary_2_0.xsd"
    version="2.0">
    <tlib-version>1.2</tlib-version>
    <uri>zd_dict</uri>
    <short-name>zd</short-name><!--表示标签的前缀名字类似于<jsp:forward>中的jsp-->  
    <tag>
        <name>dict</name><!--表示标签的名字 类似于<jsp:forward>中的forward-->  
        <description>数据字典</description>
        <tag-class>com.zd.control.tag.DitcTag</tag-class>  <!--标签所在类 -->  
        <body-content>empty</body-content><!--是否存在标签体-->
        <!-- 标签添加参数 -->
        <attribute>
            <name>id</name><!-- 给select定义一个id(必须) -->
            <required>true</required>
            <rtexprvalue>false</rtexprvalue><!-- 说明属性不可以是一个运行时表达式(必须是一个常量String) -->
     	</attribute>
     	<attribute>
            <name>name</name><!-- name映射(不是必须) -->
            <required>false</required>
            <rtexprvalue>false</rtexprvalue><!-- 说明属性不可以是一个运行时表达式(必须是一个常量String) -->
     	</attribute>
    </tag>
</taglib>
二、编写tag实现类

package com.zd.control.util;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.zd.model.system.DictionaryManage;
import com.zd.model.system.UserManage;
import com.zd.service.inter.system.DictionaryManageService;

/**
 * @author zhangQiFeng
 * @version :
 */
public class DitcTag extends TagSupport{
	private static final long serialVersionUID = 1L;
	//参数
	public String id;//给select定义一个id(必须)
	public String name;//name映射(不是必须)
	
	public static DictionaryManageService dictionaryManageService;
	public static ApplicationContext context=null;
	static{
		context=new ClassPathXmlApplicationContext("applicationContext.xml");//创建spring实体类上下文
		dictionaryManageService = (DictionaryManageService)context.getBean("dictionaryService");
	}
	public int doStartTag()throws JspException{  
		//获取session中的用户对象
		UserManage user = (UserManage)super.pageContext.getSession().getAttribute("user");
		JspWriter out = super.pageContext.getOut(); 
		//存储标签结果
		List<DictionaryManage> dataList = new ArrayList<DictionaryManage>();
		//设置标签内容
		String result = "<select ";
		//定义id
		if(id!=null&&!"".equals(id)){
			result += " id='"+id+"' ";
		}
		//name映射
		if(name!=null&&!"".equals(name)){
			result += " name='"+name+"' ";
		}
		try{
			dataList = dictionaryManageService.findDitcTag(id);
			if(!dataList.isEmpty()){
				for(DictionaryManage dm : dataList){
					result += "<option value='"+dm.getDdId()+"' >"+dm.getdName()+"</option>";
				}
			}
			result += "</select>";
			out.println(result);
		}catch(Exception e){
			e.printStackTrace();
		}  
		return TagSupport.SKIP_BODY;  
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
三、配置web.xml

<!-- jsp自定义标签 -->
	<jsp-config>  
	    <taglib>  
	        <taglib-uri>zd_dict</taglib-uri> 
	        <taglib-location>/WEB-INF/tag/dict.tld</taglib-location>  
	    </taglib>  
    </jsp-config>
四、实用方法

头部引入:<%@ taglib prefix="zd" uri="zd_dict" %> 
使用方法:<zd:dict id="100" />

参数解释:
参数名称    是否必填    类型      默认值    释义
id;         必填        字符串    无        //id(必须)
name;       非必填      字符串    无        //name映射(不是必须)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值