java 自定义列表_自定义列表标签

首先说下列表标签是什么意思呢,列表标签就是循环一个集合,把其中的元素都展现在一个表格中。比如XXXX标签,XXX标签将在后面写,这里不能说太多,大家都明白就没意思了哈哈哈哈。那么他的原理是很么呢?就是循环输出集合中的数据咯。

好吧,还是上代码更有说服力。

1.我们先写一个类:、

package com.java.tag;

import java.util.Iterator;

import java.util.List;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.TagSupport;

public class IterateTag extends TagSupport{

/**

*

*/

private static final long serialVersionUID = 1L;

private String var;//将集合中的每一个元素赋值给var,

private String items;//

private Iterator iter;//吧集合转换成Iterator

public String getVar() {

return var;

}

public void setVar(String var) {

this.var = var;

}

public String getItems() {

return items;

}

public void setItems(String items) {

this.items = items;

}

public Iterator getIter() {

return iter;

}

public void setIter(Iterator iter) {

this.iter = iter;

}

@Override

public int doStartTag() throws JspException {//开始标签

Object value=this.pageContext.getAttribute(items);//拿到属性为Iterms的属性集合,页面中的标签已规定

if(value!=null && value instanceof List){//如果value是List、类型

this.iter=((List)value).iterator();//转换为Iterator

if(iter.hasNext()){//如果iterator里面有值

this.pageContext.setAttribute(var, iter.next());//把该值塞进var中

return TagSupport.EVAL_BODY_INCLUDE; // 执行标签体-将值显示出来

}else{

return TagSupport.SKIP_BODY; // 退出标签执行

}

}else{

return TagSupport.SKIP_BODY; // 退出标签执行

}

}

@Override

public int doAfterBody() throws JspException {//退出标签体

if(iter.hasNext()){//再次判断iterator里面是否有值,如果有值

this.pageContext.setAttribute(var, iter.next());//将值赛进var

return TagSupport.EVAL_BODY_AGAIN; // 再执行一次标签体

}else{

return TagSupport.SKIP_BODY; // 退出标签执行

}

}

}

2.接着我们编写标签的描述文件:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"

version="2.1">

1.0

javaTag

iterate

com.java.tag.IterateTag

JSP

var

true

true

items

true

true

3.在jsp页面引入标签:

pageEncoding="UTF-8"%>

Insert title here

List people=new ArrayList();

people.add("张三");

people.add("李四");

people.add("王五");

pageContext.setAttribute("people", people);//将集合赛进pageContext中

%>

${p }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值