• JavaWeb--自定义标签3--带标签体的自定义标签


    3)中

    package tagTest;
    
    import javax.servlet.jsp.JspContext;
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.BodyContent;
    import javax.servlet.jsp.tagext.JspFragment;
    import javax.servlet.jsp.tagext.SimpleTagSupport;
    import java.io.IOException;
    import java.io.StringWriter;
    
    public class TestJspFragment extends SimpleTagSupport {
        private String time;
    
        public void setTime(String time) {
            this.time = time;
        }
    
        @Override
        public void doTag() throws JspException, IOException {
            //super.doTag();
            JspFragment bodyContent = getJspBody();
    
    
            StringWriter stringWriter = new StringWriter();
            bodyContent.invoke(stringWriter);
    
            String context = stringWriter.toString().toUpperCase();
    
            int count = Integer.parseInt(time);
            for(int i = 0; i < count; ++i) {
                getJspContext().getOut().print(i + 1 + ": " + context + "<br>");
            }
    
        }
    
    }
    

      

        <tag>
            <name>printWrite</name>
            <tag-class>tagTest.TestJspFragment</tag-class>
            <body-content>scriptless</body-content>
    
            <attribute>
                <name>time</name>
                <required>true</required>
                <rtexprvalue>true</rtexprvalue>
            </attribute>
    
        </tag>
    

      

    <skye:printWrite time="10">helloWorld</skye:printWrite>
    

      

    1.ForEachTag.java 类

    package tagTest;
    
    import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.tagext.SimpleTagSupport;
    import java.io.IOException;
    import java.util.Collection;
    
    public class FotEachTag extends SimpleTagSupport {
    
        private Collection<?> collection;
        private String var;
    
        public Collection<?> getCollection() {
            return collection;
        }
    
        public void setCollection(Collection<?> collection) {
            this.collection = collection;
        }
    
        public String getVar() {
            return var;
        }
    
        public void setVar(String var) {
            this.var = var;
        }
    
        @Override
        public void doTag() throws JspException, IOException {
            if(collection != null){
                for(Object obj : collection){
                    getJspContext().setAttribute(var, obj);
                    getJspBody().invoke(null);
    
                }
            }
        }
    }
    

      2.tld文件中

     <tag>
            <name>testForEach</name>
    
            <tag-class>tagTest.FotEachTag</tag-class>
            <body-content>scriptless</body-content>
    
            <attribute>
                <name>collection</name>
                <required>true</required>
                <rtexprvalue>true</rtexprvalue>
            </attribute>
    
            <attribute>
                <name>var</name>
                <required>true</required>
                <rtexprvalue>true</rtexprvalue>
            </attribute>
        </tag>
    

      3.servlet.jsp

    <%@ page import="tagTest.Customer" %>
    <%@ page import="java.util.ArrayList" %>
    <%@ page import="java.util.List" %><%--
      Created by IntelliJ IDEA.
      User: Skye
      Date: 2017/12/13
      Time: 14:38
      To change this template use File | Settings | File Templates.
    --%>
    <%@ taglib prefix="sky" uri="http://skye/jsp/jstl/core"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    
    
    <%
        List<Customer> customers = new ArrayList<Customer>();
        customers.add(new Customer(1, "AA", 23));
        customers.add(new Customer(2, "AB", 22));
        customers.add(new Customer(3, "AC", 21));
        customers.add(new Customer(4, "AD", 20));
        customers.add(new Customer(5, "AE", 28));
        customers.add(new Customer(6, "AF", 26));
        customers.add(new Customer(8, "sa", 89));
    
        request.setAttribute("customers", customers);
    %>
    <sky:testForEach collection="${requestScope.customers}" var="cust">${cust.id} -- ${cust.name}<br></sky:testForEach>
    </body>
    </html>
    

      

  • 相关阅读:
    Django中查询相关操作
    django Field选项中null和blank的区别
    翻转链表和k个一组翻转以及两两反转
    一道腾讯面试题:如何快速判断某 URL 是否在 20 亿的网址 URL 集合中?
    struct-config.xml配置文件的解析
    taglib标签在web.xml文件中报错的解决办法
    解决html中的乱码问题
    css的学习笔记
    选择器要这么用!!!!66666
    什么是个CDN???CDN是干什么的??
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/8056754.html
Copyright © 2020-2023  润新知