JSP自定义简单标签入门之带有属性

上面写的那个简单标签来控制页面中标签内容的重复次数是固定的,这就是权限“写死了”,这是非常不好的行为,因为其灵活性太差。所以下面就介绍一种使用属性来控制标签内容输出次数的方法。

准备工作

  • 创建实现了SimpleTag接口的实现类(或者是继承了SimpleTagSupport类的子类)
  • 在类中为相应的属性字段添加setter方法,注意字段名称一定要一致。否则会出错滴
  • 在tld文件中进行相关约束项的声明,不同于不带属性的简单标签的声明方式,这里多了一个attribute子标签,内有name,required(此属性是否必须存在),rtexprvalue(是否可以使用表达式,为了与EL表达式配合,一般会为true),
  • 最后就是在jsp页面中进行taglib命令的声明,以及标签的使用了。

小案例分析与实现

  • 第一步:创建类,字段setter设置:
package web.simpletag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

/** * 通过属性来控制标签体的执行次数 * @author Summer * */
public class WithAttribute extends SimpleTagSupport {

    private int count;//用于操作maniplate次数的字段

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

    @Override
    public void doTag() throws JspException, IOException {

        for(int i=0;i<count; i++){
            this.getJspBody().invoke(null);
        }
    }



}
  • 第二步:tld声明的书写:

    <!-- 带有属性的的自定义简单标签 -->
    <tag>
        <name>WithAttribute</name>
        <tag-class>web.simpletag.WithAttribute</tag-class>
        <body-content>scriptless</body-content>

        <attribute>
            <name>count</name>
            <required>true</required>
            <!-- 属性值是否为表达式?一般是EL表达式 -->
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
  • 第三步:jsp页面的生命与使用
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="/simplesummer" prefix="summer"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用属性来控制标签内容的输出次数的自定义简单标签的测试页面</title>
</head>
<body>

    <summer:WithAttribute count="7">
        I am Summer !!!<BR>
    </summer:WithAttribute>

</body>
</html>
  • 在jsp页面中,我们就可以手动的设置count属性的值来操作这个自定义标签的重复次数了。
  • 测试结果展示:

    JSP自定义简单标签入门之带有属性_第1张图片

你可能感兴趣的:(标签,自定义带有属简单标签,通过标签属性控制内容)