实现 jstl标签foreach 功能
jsp 页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="/includes/ctx.jsp" %>
<%@ taglib uri="/RemoveListItems" prefix="z"%>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>角色管理</title>
</head>
<body>
<z:for items="${rolelist}" var="z">
<p>${z.rolename}</p>
</z:for>
</body>
</html>
WEB-INF 目录下创建tld 文件
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee">
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>eRedLab JSPTag Library</shortname>
<uri>/RemoveListItems</uri>
<info>自定义标签</info> <tag>
<name>for</name>
<tagclass>com.oa.tag.Repeater</tagclass>
<bodycontent>scriptless</bodycontent>
<info></info>
<attribute>
<name>items</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>var</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>index</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
java 类代码
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport; public class Repeater extends TagSupport { /**
*
*/
private static final long serialVersionUID = 4086401651029717288L;
private List<?> items;
private String var;
private String index;
private int i; @Override
public int doStartTag() throws JspException { if (items == null || items.size() == 0){
return SKIP_BODY;
}
if(index==null)index = ""; i = 0;
if(i<items.size()){
pageContext.setAttribute(var, items.get(i));
pageContext.setAttribute(index, i);
} return EVAL_BODY_INCLUDE;
} @Override
public int doAfterBody() throws JspException {
i++;
if(i < items.size()){
pageContext.setAttribute(var, items.get(i));
pageContext.setAttribute(index, i);
return EVAL_BODY_AGAIN;
} return SKIP_BODY;
} @Override
public int doEndTag() throws JspException {
return EVAL_PAGE;
} public void setItems(List<?> items) {
this.items = items;
} public void setVar(String var) {
this.var = var;
} public void setIndex(String index){
this.index = index;
} }
实现 jstl标签foreach 功能的更多相关文章
- jstl标签forEach的用法--遍历java的集合
再讲<c:forEach>之前,现讲一下让EL表达式生效的语句 <% @ page isELIgnored="false"%>这句语句在你想让EL表达式生效 ...
- JSTL标签出错:<c:forEach var="book" items="${requestScope.books}" varStatus="status">
今天在运行书里的JSTL标签代码的时候出错,总结一下: 问题1.The JSP specification requires that an attribute name is preceded by ...
- 详解JSTL的forEach标签
详解JSTL的forEach标签 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍. <c:forEach> 标签的语法 说明 : 语法:迭代一集合对象之所有 ...
- jstl的foreach标签
jsp支持丰富的jstl标签语言(需要jar包支持),其中list循环(迭代)用的是<c:forEach></c:forEach>标签. 这个标签的作用就是迭代输出标签内部的内 ...
- JSTL的forEach标签中的属性具体含义
JSTL的forEach标签在JSP页面经常替代Java脚本的循环语句,生成多个记录的信息.一般只需 一个一个的展示记录即可,有些需要获取当前记录的索引.在需要获取当前记录的索引的时候可能 有点麻烦, ...
- JSTL标签 参考手册
前言 ========================================================================= JSTL标签库,是日常开发经常使用的,也是众多 ...
- JSTL标签库
JSP页面作为内嵌java的Html简化了Servlet在控制页面显示的语法,但JSP脚本中的表达式功能不够强大,语法也稍显繁杂,EL(Expression Language)表达式语言的出现能够大大 ...
- JSTL标签库之核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- jstl 标签库的使用
JSTL 核心标签库 使用 JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.ot ...
随机推荐
- 视差滚动demo (pc)
根据设计图设定每屏的高度,js会自动缩放到全屏尺寸,效果要大尺寸才能看的出来 demo :http://runjs.cn/detail/uvizsekd <!DOCTYPE html> & ...
- 四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享
一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现-- ...
- 深入理解 C 指针阅读笔记 -- 第五章
Chapter5.h #ifndef __CHAPTER_5_ #define __CHAPTER_5_ /*<深入理解C指针>学习笔记 -- 第五章*/ /*不应该改动的字符串就应该用 ...
- 24.qint64转QString 以及获取文件属性
qint64转QString qint64 size = info.size(); //qint64 转QString QString size2 = tr("%1").arg(s ...
- 一种比较高级的方法也可以修改windows为默认启动系统
运行: sudo mv /etc/grub.d/30_os-prober /etc/grub.d/06_os-probersudo update-grub
- infludb语法--官网
https://docs.influxdata.com/influxdb/v0.8/api/query_language/ InfluxDB features a SQL like query lan ...
- 源码编译Oprofile
上菜了翠花:首先编译Oprofile需要三个源码:binutils.popt与oprofile Linux版(由于是在64位的linux系统编译-----敬请参考“在64位linux上编译32位程序” ...
- 基于XMPP利用openfire简单的即时通讯
功能的实现结果:能够使自己编写客户端与spark客户端信息通讯,将接受到的信息更新到textview上. 1.下载openfire并安装.设置域名,添加用户 2.下载安装spark客户端 3.jar包 ...
- jquery根据滚动条动态加载数据
PHP Code <div id="container"> <?php $query=mysql_query("select * from conten ...
- arttemplate模板引擎里面多层循环
要使用支持原生js的插件: 代码截图: json数据 { "list": [ { "name": "学历层次", "item&qu ...