自定义标签

1.导入架包

   <!--javaee-->
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>

2.新建标签类
com.util.MyTay
继承 SimpleTagSupport

public class MyTag extends SimpleTagSupport {



    @Override  //定义希望标签做的事情
    public void doTag() throws JspException, IOException {

       
       JspWriter out= this.getJspContext().getOut();
        out.print("这是我的自定义标签");
       

    }
}

3.在WEB-INF文件夹下创建mytag.tld


<?xml version="1.0" encoding="UTF-8" ?>
<taglib>

    <tlib-version>1.1</tlib-version>
    <jsp-version>2.0</jsp-version>

    <!--默认的简称-->
    <short-name>mytag</short-name>

    <!--引用地址-->
    <uri>http://java.sun.com/jsp/mytag/my</uri>
    
    <tag>
        <name>abc</name>
        <tag-class>com.util.MyTag</tag-class>


            <!--写入内容为空-->
        <body-content>empty</body-content>
		可以写入,二者只能选一个
	<body-content>scriptless</body-content>
    </tag>
</taglib>

4.jsp
empty属性,则标签中间不能写东西
中间不能写东西,不然会报错

<mytag:acb>不能写<mytag:acb/>

读取标签中间的内容
更改MyTag的内容为


public class MyTag extends SimpleTagSupport {
    

    @Override  //定义希望标签做的事情
    public void doTag() throws JspException, IOException {

     
       //获得标签对中间的内容并输出
        StringWriter sw=new StringWriter();
        this.getJspBody().invoke(sw);
        this.getJspContext().getOut().print(sw);
    

    }
}

在标签里面添加属性
比如 <c:if test="">中的test
在mytag.tld文件添加

<?xml version="1.0" encoding="UTF-8" ?>
<taglib>

    <tlib-version>1.1</tlib-version>
    <jsp-version>2.0</jsp-version>

    <!--默认的简称-->
    <short-name>mytag</short-name>

    <!--引用地址-->
    <uri>http://java.sun.com/jsp/mytag/my</uri>
    
    <tag>
        <name>abc</name>
        <tag-class>com.util.MyTag</tag-class>


            <!--写入内容为空-->
        <body-content>empty</body-content>
		可以写入,二者只能选一个
	<body-content>scriptless</body-content>



    </tag>
</taglib>
----------------------------------------------------
.jsp
<mytag:acb/>  中间不能写东西,不然会报错

-----------------------------------------------------
标签中间的内容读到标签


public class MyTag extends SimpleTagSupport {
    

    @Override  //定义希望标签做的事情
    public void doTag() throws JspException, IOException {

     
       //获得标签对中间的内容并输出
        StringWriter sw=new StringWriter();
        this.getJspBody().invoke(sw);
        this.getJspContext().getOut().print(sw);
    

    }
}
----------------------------------------------------------
在标签里面添加属性,比如<c:if test="">
在mytag.tld文件添加
<?xml version="1.0" encoding="UTF-8" ?>
<taglib>

    <tlib-version>1.1</tlib-version>
    <jsp-version>2.0</jsp-version>

    <!--默认的简称-->
    <short-name>mytag</short-name>

    <!--引用地址-->
    <uri>http://java.sun.com/jsp/mytag/my</uri>
    
    <tag>
        <name>abc</name>
        <tag-class>com.util.MyTag</tag-class>


            <!--写入内容为空-->
        <!--<body-content>empty</body-content>-->



        <body-content>scriptless</body-content>
        <attribute>
            <!--属性的名称-->
            <name>test</name>
            <!--属性是否必须要写-->
            <required>true</required>
            <!--内容的属性-->
            <type>java.lang.String</type>
            <rtexprvalue>true</rtexprvalue><!--支持el表达式解析-->
        </attribute>
      
    </tag>
</taglib>

在MyTag添加


private String test;

//生成get和set方法
public void setTest(){
********
}
public   String getest(){
*********
}



 this.getJspContext().getOut().print(test+".....");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值