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 功能的更多相关文章

  1. jstl标签forEach的用法--遍历java的集合

    再讲<c:forEach>之前,现讲一下让EL表达式生效的语句 <% @ page isELIgnored="false"%>这句语句在你想让EL表达式生效 ...

  2. JSTL标签出错:<c:forEach var="book" items="${requestScope.books}" varStatus="status">

    今天在运行书里的JSTL标签代码的时候出错,总结一下: 问题1.The JSP specification requires that an attribute name is preceded by ...

  3. 详解JSTL的forEach标签

    详解JSTL的forEach标签 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍.      <c:forEach> 标签的语法 说明 : 语法:迭代一集合对象之所有 ...

  4. jstl的foreach标签

    jsp支持丰富的jstl标签语言(需要jar包支持),其中list循环(迭代)用的是<c:forEach></c:forEach>标签. 这个标签的作用就是迭代输出标签内部的内 ...

  5. JSTL的forEach标签中的属性具体含义

    JSTL的forEach标签在JSP页面经常替代Java脚本的循环语句,生成多个记录的信息.一般只需 一个一个的展示记录即可,有些需要获取当前记录的索引.在需要获取当前记录的索引的时候可能 有点麻烦, ...

  6. JSTL标签 参考手册

    前言 ========================================================================= JSTL标签库,是日常开发经常使用的,也是众多 ...

  7. JSTL标签库

    JSP页面作为内嵌java的Html简化了Servlet在控制页面显示的语法,但JSP脚本中的表达式功能不够强大,语法也稍显繁杂,EL(Expression Language)表达式语言的出现能够大大 ...

  8. JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  9. jstl 标签库的使用

    JSTL 核心标签库 使用   JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.ot ...

随机推荐

  1. Hdu 4280 Island Transport(最大流)

    Island Transport Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  2. 【VC编程技巧】窗口☞3.5对单文档或者多文档程序制作启动画面

    (一)概要: 文章描写叙述了如何通过Visual C++ 2012或者Visual C++ .NET,为单文档或者多文档程序制作启动画面.在Microsoft Visual Studio 6.0中对于 ...

  3. 一个JavaWeb项目中使用的部分技术

    -- 2015年8月8日 1. Web框架: Spring+ SpringMVC + MyBatis Spring: 作为容器.工厂,用于解耦以及管理对象生命周期. 整合各类框架和依赖. MVC  : ...

  4. C#+HtmlAgilityPack+Dappe

    C#+HtmlAgilityPack+Dappe (转发请注明来源:http://www.cnblogs.com/EminemJK/) 最近因为公司业务需要,又有机会撸winform了,这次的需求是因 ...

  5. BZOJ 2733 线段树的合并 并查集

    思路: 1.线段树合并(nlogn的) 2.splay+启发式合并 线段树合并比较好写 我手懒 //By SiriusRen #include <cstdio> #include < ...

  6. struts2学习之基础笔记1

    第6章 Strusts 2框架 1  引出 Web App  àà MVC  àà View 视图(jsp,html,JS) | C(Servlet)Filter,Listneer | M(数据bea ...

  7. 一个vue的全局提示框组件

    <template> <!-- 全局提示框 --> <div v-show="visible" class="dialog-tips dia ...

  8. StatusBarUtils工具类

    import android.app.Activity; import android.app.Dialog; import android.content.Context; import andro ...

  9. 如何解决 不能以 DISTINCT 方式选择 text、ntext 或 image 数据类型

    distinct去重,如果遇到text字段,可以用以下方法解决 1.用not exists select * from tab awhere not exists (  select 1 from t ...

  10. js浏览器下载总结(ios、and、微信、qq)

    前段时间做了个项目,里面关于手机移动端下载的问题 开始是判断微信.ios和android系统的下载 因为微信屏蔽点击事件和链接的缘故,需要通过打开新页面来进行下载 ios和android的下载分别为不 ...