开发带属性的标签

自定义标签可以定义一个或多个属性,这样,在jsp页面中应用自定义标签时就可以设置这些属性的值,通过这些属性为标签处理器传递参数信息,从而提高标签的灵活性和复用性。

开发带属性的标签_第1张图片
attribute.png

1.标签处理器类 HasProperty

package cn.itcast.web.simpletag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
import java.util.Date;

public class HasProperty extends SimpleTagSupport {

    private int count;
    private Date date;

    public void setCount(int count) {
        this.count = count;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    @Override
    public void doTag() throws JspException, IOException {
        JspFragment jf = this.getJspBody();
        jf.getJspContext().getOut().write(date.toLocaleString() + "
"); for (int i = 0; i < count; i++) { jf.invoke(null); } } }

2.建标签库描述符文件 property.tld:添加了Attribute,里面的rtexprvalue表示运行时表达式的值,为true可以在里面写表达式,脚本的,el的都可以。但是如果在用date属性时,rtexprvalue为false会报错。可以试一下。



    A tag library exercising SimpleTag handlers.
    1.0
    property
    /property

    
        HasProperty
        cn.itcast.web.simpletag.HasProperty
        scriptless

        
            count
            true
            true
        

        
            date
            true
            true
        
    

3.jsp里使用

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="p" uri="/property" %>


    开发带属性的标签



    添加count属性,循环输出3次

你可能感兴趣的:(开发带属性的标签)