首先说下列表标签是什么意思呢,列表标签就是循环一个集合,把其中的元素都展现在一个表格中。比如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 }

java 自定义列表_自定义列表标签相关推荐

  1. java import自定义类_自定义类加载器-从.class和.jar中读取

    一. 类加载器 JVM中的类加载器:在jvm中,存在两种类加载器, a) Boostrap ClassLoader:这个是由c++实现的,所以在方法区并没有Class对象的实例存在.用于加载JAVA_ ...

  2. python 列表自定义排序_自定义排序的Python列表

    我有一个dicts列表: ldicts = [{'name': '120-150'}, {'name': '90-120'}, {'name': '150-180'}, {'name': '>= ...

  3. java自定义配置文件_自定义配置文件如何配置

    @Component public class RoleDirectiveModel implements TemplateDirectiveModel { /** * * @param enviro ...

  4. java自定义字段_自定义字段的设计与实现(Java实用版)

    前言 自定义字段又叫做"开放模型",用户可以根据自已的需求,添加需要的字段,实现个性化定制. 使用自定义字段的目的,使用自定义字段解决哪些问题 如现有一套CRM系统,客户模块中客户 ...

  5. java validate校验_自定义工具类实现validate参数校验

    前言 相信项目中做一些htttp接口,避免不了要对参数进行校验,大多数情况下,其实我们只是校验是否为NULL就可以了 1.通过注解实现各种状态的字段 1.1.引入依赖 默认的版本是6.0.9.Fina ...

  6. java 日志切面_自定义注解+面向切面整合的日志记录模块(一)

    java中的常见注解 jdk的自带注解 @Override:告诉编译器我重写了接口方法 @Deprecated:告诉编译器这个方法过时了,不建议使用,Ide会在方法上划横线 @SuppressWarn ...

  7. java 自定义表达式_自定义 Java Lambda

    用了这么久的 Java,也体验了 Java 8 的 lambda 带来的便捷,但是我一直都是直接用,而从未想过他是如何实现的.比如:为什么在小括号里面可以放一个函数作为参数,自己造一个lambda 应 ...

  8. java 地图报表_自定义地图功能介绍

    自定义动态地图利用动态的和互动式的falsh地图帮助您按类别,地区或实体显示地理数据.用户可以用它有效地按以下因素绘制业务数据,如地区产品销售额,地区税收,户口普查资料,如国家人口数,选举结果和统计调 ...

  9. java session 持久化_自定义实现session持久化

    自定义实现session持久化 使用场景 对于有登录校验的网站,tomcat 重启之后,刷新页面又得重新登录,影响用户体验. 原因: tomcat 的session 在内存中,tomcat重启之后,内 ...

  10. java授权失败_自定义Spring Security的身份验证失败处理方法

    1.概述 在本快速教程中,我们将演示如何在Spring Boot应用程序中自定义Spring Security的身份验证失败处理.目标是使用表单登录方法对用户进行身份验证. 2.认证和授权(Authe ...

最新文章

  1. airflow sql_alchemy_conn mysql_airflow的安装和使用 - 完全版
  2. 各类电脑高效率神器使用及下载地址
  3. springboot session默认失效时间_Spring Boot 整合 Redis,用起来真简单
  4. Python——随机法(蒙特卡罗方法)计算圆周率
  5. PHP5.1时间相差8小时问题解决。
  6. .NetCore SkyWalking APM实现服务器监控环境安装及基础使用
  7. Android之canvas详解
  8. 朴素贝叶斯分类器(Naive Bayes Classifiers)
  9. 面试篇---jq扩展自定义方法
  10. Qt实现带验证码的输入框
  11. Maven的安装与配置教程
  12. 运维工具之科来网络分析系统安装和使用
  13. Load Runner:了解软件安装后目录http://www.boobooke.com/bbs/thread-1959-1-1.html
  14. Java 解析pdf文档内容实战案例
  15. 计算机应用安装不了软件总被隔离,电脑安装软件时显示此程序被组策略阻止的解决方法...
  16. 一个简单的跑酷引擎-------bibibibi
  17. 侣吵架脱光衣服路人震惊 盘点那些行为出格的情侣(组图
  18. Java并发编程synchronized详解
  19. Python通过MQTT协议上传物联网数据给ThingsBoard
  20. 有关FLOPS的定义与计算

热门文章

  1. 2018服务器cpu性能天梯图,哪里看CPU性能排行榜?2018年CPU天梯图最新版(高清)...
  2. 电机与拖动 - 7 直流电机
  3. 学生成绩分析系统后端函数解释(Python)
  4. ensp官方停止下载
  5. c++课程设计之通讯录电话簿管理设计
  6. ov5640帧率配置_OV5640(2):配置寄存器
  7. recv 函数返回值说明
  8. wkt文件java解析_WKT文件解析 以及各个投影坐标的wkt参数查询
  9. sap 新增科目表_在SAP中新建会计科目
  10. 百度网盘下载加速方法(免会员免破解官方正规)