JSTL标签开发(带属性)

15 篇文章 1 订阅
5 篇文章 0 订阅

1)自定义标签可以定义一个或多个属性,这样,在jsp页面中应用自定义标签时就可以设置这些属性的值,通过这些属性的值就可以标签处理器传递参数信息,从而提高标签的灵活性和复用性。
2)要想让一个自定义标签具有属性,通常需要完成两个任务:

  1. 在标签处理器中编写每个属性的setter方法

  2. 在Tld文件中描述标签的属性

3)为自动义标签定义属性时,每个属性必须按照JavaBean的属性命名方式,在标签处理器中定以属性名对应的setter方法,用来接收jsp页面调用自定义标签时传递进来的属性值。例如属性url,在标签处理器类中就要定义相应得setURL(String url)方法。
4)在标签处理器中定义相应的set方法后,Jsp引擎会在解析执行开始标签前,也就是调用dostartTag方法前,会调用set属性方法,为标签设置属性。
5)元素的子元素用于描述自定义标签的一个属性,自定义标签所具有的每个属性都要对应一个元素

    taglib
        description
        tlib-version
        short-name
        uri
        tag
            name//标签名
            tag-class//类
            body-content//empty表示标签体为空
            attribute
                description
                name
                required
                rtexprvalue
                type

6)description:用于指定属性的描述信息
name(必须指定):用于指定属性的名称。属性名称的大小写敏感,并且不能以jsp、_jsp、java和sun开头
required:用于指定在jsp页面中调用自定义标签时是否必须设置这个属性。其取值包括true和false,默认值为false,true表示必须设置
rtexprvalue:runtime expression value(运行时表达式)的英文简写。用于指定属性值是一个静态值或动态值。true和false,默认false。表示只能为该属性值指定静态文本值。true可以设置Jsp动态元素,如:<%= %>。
type:用于指定属性值的Java类型值。
7)简单标签开发示例:
对于if标签:

1-创建一个类继承SimpleTagSupport

public class IfTag extends SimpleTagSupport{
    private boolean test;
    public void setTest(boolean test) {
        this.test = test;
    }
    @Override
    public void doTag() throws JspException, IOException {
        if(test) {
            this.getJspBody().invoke(null);
        }
    }   
}

2-在tld文件中描述:

<tag>
    <name>if</name>
    <tag-class>tags.iftag.IfTag</tag-class>
    <body-content>scriptless</body-content>

    <attribute>
        <name>test</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
 </tag>

3-使用:
1.在jsp页面使用taglib命令导入:
<%@ taglib uri=”tld文件中的uri” prefix=”self”%>
2.测试:

<self:if test="true">show</self:if>
<self:if test="false">show</self:if>

8)打包标签库
1-可以新建一个Java工程,将需要打包的类全部复制到Java工程中
2-导入jsp-api.jar,servlet-api.jar,然后add to buildpath
3-export导出
4-使用,自己开发的jar的使用方式和sun公司开发出的相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值