简单的带有属性的自定义标签

认识自定义标签http://www.cnblogs.com/realshijing/p/7890155.html

带属性的自定义标签:

带有属性的自定义标签,必须在自定义SimpleTag子类中为该属性设置Set方法。

①. 先在标签处理器类中定义 setter 方法. 建议把所有的属性类型都设置为 String 类型.

private String value;
private String count;

public void setValue(String value) {
this.value = value;
}

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

②. 在 tld 描述文件中来描述属性:

 <!-- 描述当前标签的属性 -->
        <attribute>
            <!-- 属性名 -->
            <name>value</name>
            <!-- 该属性是否必须 -->
            <required>true</required>
            <!-- rtexprvalue: runtime expression value 当前属性是否可以接受运行时表达式的动态值 -->
            <!--例如El表达式-->
            <rtexprvalue>true</rtexprvalue>
        </attribute>

        <attribute>
            <name>count</name>
            <required>false</required>
            <rtexprvalue>false</rtexprvalue>
        </attribute>

③. 在页面中使用属性, 属性名同 tld 文件中定义的名字. 

  <nchu:hello value="${param.name}" count="10"/>

④.标签处理器类对属性值进行处理

package yang.mybatis.tag;
import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.JspTag;
import java.io.IOException;

/**
 * Created by yangshijing on 2017/11/24 0024.
 */
public class HelloSimpleTag implements javax.servlet.jsp.tagext.SimpleTag{
    private  PageContext pageContext;
    private  String value;
    private  String count;

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

    public void setValue(String value) {
        this.value = value;
    }
    @Override
    public void doTag() throws JspException, IOException {
        pageContext.getOut().print("value :" + value + " count: " +count);
    }

    @Override
    public void setParent(JspTag jspTag) {
        System.out.println("setParent");

    }

    @Override
    public JspTag getParent() {
        System.out.println("getParent");
        return null;
    }

    @Override
    public void setJspContext(JspContext jspContext) {
        pageContext = (PageContext) jspContext;
    }

    @Override
    public void setJspBody(JspFragment jspFragment) {
        System.out.println("setJspBody");

    }


}

⑤.结果

原文地址:https://www.cnblogs.com/realshijing/p/7890551.html