实现 jstl标签foreach 功能
2016-01-06 22:13
597 查看
jsp 页面
WEB-INF 目录下创建tld 文件
java 类代码
<%@ 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; } }
相关文章推荐
- js中对字符串的处理
- TypeError: window.clipboardData is undefined
- JSON库之性能比较:JSON.simple VS GSON VS Jackson VS JSONP
- 仿百度图片浏览效果
- ExtJS远程数据-本地分页
- JavaScript的那些坑之变量提升
- [bzoj1014][JSOI2008]火星人prefix
- 如何安装chrome扩展,以json-handle
- json-lib——JsonConfig详细使用说明
- [html][javascript]动态增删页面元素
- JavaScript unescape() 函数详解
- JavaScript escape() 函数详解
- Senna.js – 速度极快的单页应用程序引擎
- js基本内容
- Javascript实现完美的运动动画框架
- JS打开新窗口的2种方式
- js中文乱码问题
- js ajax 分页
- Javascript中 cookie的操作和详解
- js继承机制的实现