EL自定义标签的创建过程(如何使用EL标签遍历集合与任意类型的数组)

目录

一:简单了解自定义EL标签的方法

二:提出合理的EL标签需求并创建对应的标签处理器

1.提出需求

2.设计标签

3.设计这个标签的处理器

三:注册EL标签到标签库

1.创建tld文件到WEB-INF目录下

2.添加tld约束,注册EL标签

四:引用并使用EL标签 


一:简单了解自定义EL标签的方法

第一件需要了解的事情是如果想要自定义EL标签就需要实现JspTag接口,而这个接口有两个继承接口SimpleTag和Tag。

这两个接口有什么不同呢?SimpleTag顾名思义,简单标签。相对于Tag接口,SImpleTag接口仅提供一个doTag()方法对标签进行处理从而避免繁琐,而Tag接口则提供了更加细致的方法来处理标签,例如:doEndTag()和doEndTag()。所以,在这里我选择更简单的接口SimpleTag进行EL标签的自定义。不过,Java的维护者对我们程序员是细心的,因为他们已经提供了一个SimpleTag的实现类SimpleTagSupport,这个类不但帮我们实现了接口,而且还扩展了两个实用的GET方法是我们可以更加灵活方便的控制EL标签的业务处理。

二:提出合理的EL标签需求并创建对应的标签处理器

1.提出需求

定义一个标签从而可以遍历List、Map、Set、引用数组、基础类型数组

2.设计标签

一般标签的格式是:<tld前缀[短名]:标签名 属性1=“值”  [...]></tld前缀[短名]>

当然单标签(不带实体的)和双标签(带实体的)格式仅仅是标签封口(/)位置的不同而已,那么我们根据需求设计的标签格式可以是下面这个样子:

<!--myTag是自定义前缀名或者是短名,可以在tld中任意修改
    items属性用来存放需要遍历的数据集
    var用来回显输出我们需要的结果,在业务处理中起到索引和标记的作用,后面会有写到
-->
<myTag:ForEach items="" var=""></myTag:ForEach>

 3.设计这个标签的处理器

上面已经提到过了,想让这个标签变的有用,就需要创建一个与之对应的类并实现SimpleTagSupport类,以下是类的实现:

package com.niu;

import java.io.IOException;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

//类名是可以随意起的,这个类名和标签名不是一个名字。
public class ForEachTag extends SimpleTagSupport {
	
	//这里的属性名必须和标签内的属性名保持一致,必须严格匹配大小写。
	//在处理业务时,标签内的属性值会通过相应的set访问器来设置标签处理器内相对应的属性值。
	//例如:标签内var="v",那么这处理器内var的值也会是"v"。
	private Object items;
	private String var;
	
	public void setItems(Object items) {
		this.items = items;
	}

	pu
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值