zoukankan      html  css  js  c++  java
  • 实现 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;
    	}
    	
    }
    

      

  • 相关阅读:
    线程共享全局变量和私有全局变量
    线程退出前操作
    Linux下线程pid和tid
    几种常见的光纤接头(ST,SC,LC,FC)以及PC、APC和UPC的区别
    Javascript对象及数组用法笔记
    Javascript对象及数组用法笔记
    程序员特有的9个坏习惯
    程序员特有的9个坏习惯
    程序人生:真正的效率源自专注
    程序人生:真正的效率源自专注
  • 原文地址:https://www.cnblogs.com/zfy0098/p/5107622.html
Copyright © 2011-2022 走看看